Nathan Braswell 025b149c28 Implemented each marked node carrying the de Bruijn indicies that it needs to continue evauluating, but now it takes the exact same amount of time that it used to
And I think I've realized why - it's being too conservative about what it actually needs to be a value and includes the entire environment chain, which pretty much means anytime it would have been re-evaluated because a parent function was called or re-evaluated it will also be re-evaluated, and none of this changes anything
I think I can change it to more intelligently pull what's necessary based on what's used in the body of the function instead and get the optimization to work as I expected - fingers crossed
2022-01-09 00:17:57 -05:00
2021-08-01 00:23:41 -04:00
2020-09-06 22:10:59 -04:00
2017-02-02 00:46:36 -05:00
2020-05-12 16:22:41 -04:00
2020-05-12 16:22:41 -04:00
2020-05-12 16:22:41 -04:00
2018-05-22 20:14:15 -04:00
2020-03-10 12:57:28 -04:00
2018-04-17 11:25:53 -04:00
2020-04-02 14:15:41 -04:00
2021-08-01 00:23:41 -04:00

Kraken

The Kraken Programming Language

(try it out online at http://www.kraken-lang.org/)

(vim integration (filetype, syntax highlighting, Syntastic) at https://github.com/Limvot/kraken.vim) (emacs integration (filetype, syntax highlighting) at https://github.com/Limvot/kraken-mode)

The Kraken Programming Language is functional but very much still in development. It has both the normal features you might expect of a modern language, (functions, variables, an object system, dynamic memory), as well as some more advanced ones (mutually recursive definitions, lambdas/closures, algebraic data types, templates, marker traits, defer statements, etc).

Kraken can either compile to C or its own bytecode which is then interpreted.

Dependencies

Kraken is self-hosted - in order to build it, a script is included that will compile the original C++ version (which depends on CMake) and then checks out each necessary version to compile up to the current one. This can take quite a while - when it hits 1.0 I am planning on removing the old C++ version and checking in a pre-compiled-to-c version to use for further bootstrapping.

Goals

It has the following design goals:

  • Compiled
  • Clean
  • Fast (both running and writing)
  • Good for Systems (including Operating Systems) programming
  • Very powerful libraries (say, a library that allows you import from automatically parsed C header files)
  • Minimal "magic" code. (no runtime, other libraries automatically included)

It is inspired by C, Kotlin, Rust, and Jai.

Description
Currently, a purely functional F-Expr based Lisp compiled to WebAssembly. History contains multiple iterations of my experiments to explore and create my personal perfect language.
Readme 12 MiB
Languages
Rust 40.6%
NewLisp 12.7%
HTML 11.7%
Shell 7.5%
JavaScript 4.4%
Other 23.1%