kempe: Kempe compiler

[ bsd3, compilers, language, library, program ] [ Propose Tags ] [ Report a vulnerability ]

Kempe is a stack-based language


[Skip to Readme]

Flags

Manual Flags

NameDescriptionDefault
cross

Enable to ease cross-compiling

Disabled

Use -f <flag> to enable a flag, or -f -<flag> to disable that flag. More info

Downloads

Note: This package has metadata revisions in the cabal description newer than included in the tarball. To unpack the package including the revisions, use 'cabal get'.

Maintainer's Corner

Package maintainers

For package maintainers and hackage trustees

Candidates

Versions [RSS] 0.1.0.0, 0.1.0.1, 0.1.0.2, 0.1.1.0, 0.1.1.1, 0.1.1.2, 0.1.1.3, 0.2.0.0, 0.2.0.1, 0.2.0.2, 0.2.0.3, 0.2.0.4, 0.2.0.5, 0.2.0.6, 0.2.0.7, 0.2.0.8, 0.2.0.9, 0.2.0.10, 0.2.0.11, 0.2.0.12, 0.2.0.13, 0.2.0.14
Change log CHANGELOG.md
Dependencies array, base (>=4.11 && <5), bytestring, composition-prelude (>=2.0.2.0), containers (>=0.6.0.0), deepseq, extra (>=1.7.4), kempe, microlens, microlens-mtl, mtl, optparse-applicative, prettyprinter (>=1.7.0), process (>=1.2.3.0), temporary, text, transformers [details]
License BSD-3-Clause
Copyright Copyright: (c) 2020 Vanessa McHale
Author Vanessa McHale
Maintainer vamchale@gmail.com
Revised Revision 2 made by vmchale at 2020-12-09T19:12:03Z
Category Language, Compilers
Source repo head: git clone https://github.com/vmchale/kempe
Uploaded by vmchale at 2020-12-02T23:54:26Z
Distributions
Executables kc
Downloads 3526 total (47 in the last 30 days)
Rating 2.0 (votes: 1) [estimated by Bayesian average]
Your Rating
  • λ
  • λ
  • λ
Status Docs uploaded by user [build log]
All reported builds failed as of 2020-12-03 [all 1 reports]

Readme for kempe-0.1.0.0

[back to package description]

Kempe

Kempe is a stack-based language and toy compiler for x86_64. It requires the nasm assembler.

Inspiration is primarily from Mirth.

See manual here.

Installation

Installation is via cabal-install:

cabal install kempe

For shell completions put the following in your ~/.bashrc or ~/.bash_profile:

eval "$(kc --bash-completion-script kc)"

Defects

  • Unification takes too long

  • Errors don't have position information

  • Monomorphization fails on recursive polymorphic functions

  • If pattern matches fail at runtime, code just keeps running with whatever was after the jumps (no pattern match exhaustiveness checker)

  • Can't export or call C functions with more than 6 arguments; can't call or export large arguments (i.e. structs) passed by value.

    This is less of an impediment than it sounds like.

  • Sizing for ADTs is not rigorous in places