Skip to content

v0.9.0

Compare
Choose a tag to compare
@skx skx released this 01 Oct 14:21
· 383 commits to master since this release

This release focused upon increased compatibility with Mal, which meant allowing alternative ways of expressing things that had previously been possible in a niche way.

For example this is how we defined a factorial-function:

(define fact (lambda (n)
  (if (<= n 1)
    1
      (* n (fact (- n 1))))))

That is nice and clear, but using "define" and "lambda" might be confusing. So now we can write that in the way that a Mal user might expect and prefer:

(set! fact (fn* (n)
      (if (<= n 1)
        1
          (* n (fact (- n 1))))))

We've increased compatibility by adding expected standard-forms, such as fn*, let*, set!, and defmacro!. We've also updated the standard-library, which is written in lisp, to add some methods users might expected - for example false?, slurp, true?, vals, and contains?.

Test-coverage remains at 100%, and our fuzz-tester hasn't revealed any unexpected segfaults/panics.

Finally we updated our README.md file, and added (arch) and (os) methods, to allow conditional execution at run-time, based on environment. It is also possible to execute code upon the CLI without reading a file:

yal -e "(print (os))"