Skip to content

v0.12.0

Compare
Choose a tag to compare
@skx skx released this 12 Nov 14:06
· 154 commits to master since this release
508f7c2

This release features a whole number of changes, improvements, and additions compared to the previous one.

New Features

  • Introduced a character-type alongside our existing string/number/list types.
    • Reported in #64, resolved in #65.
  • Introduced the use of real format strings for printf and sprintf.
    • This forces the use of real types (print "My number is %d" 34).
    • Previously all values were output as strings, via %s.
    • Reported in #66, resolved in #67.
  • Added a REPL mode, as is traditional for lisp interpreters.
    • Reported in #70, closed in #73.
    • The REPL allows loading an init-file, if present:
      • Implemented in 5347f1c
      • An example .yalrc file was later added to the project.
  • Added support for binary and hexadecimal (numerical) literals.
    • Reported in #78, resolved in #79.
  • Added new list primitives intersection, member, and union.
  • Added the special form (symbol).
    • Reported in #84, resolved in #85.
  • Added substr.
    • Reported in #86, resolved in #88.
  • Implemented numerical conversion functions (base), and (number).
    • Reported in #80, resolved in #89.
  • Added a lot of test functions in lisp-tests.lisp.
    • Reported in #83, resolved in #91.

Changes

  • Aliased functions are reported as such when displayed by the CLI driver.
    • i.e. When you execute yal -h [regexp].
    • Reported in #68, resolved in #69.
  • Simplified the implementation of our main driver, main.go.
    • Reported in #71, closed in #72.
  • Added example sorting-routines in 2924190
    • insertion-sort, written in lisp.
    • quick-sort, written in lisp.
    • And a benchmark showing which was faster.
    • Code is present in sorting.lisp.
  • Moved the implementation of (nth ..) from lisp to the golang core.
    • This was done for speed-reasons when it became obvious it was a limiting factor in our sorting benchmark.
    • Reported in #75, closed in #76.
  • Updated our (append) to work in a way that makes more sense.
    • This was triggered by our sorting.lisp example file needing some work to run.
    • Reported in #74, closed in #77.
  • Document the usage of the rlwrap tool to provide completion to the REPL.
    • Reported in #81, resolved in #90.

Regressions?

None known.

Future Plans?

I'd like to take a stab at implementing structures, as reported in #82. But beyond that I have nothing specific scheduled, or planned.

Personally I'm using this application to provide an embedded scripting language for a hardware-related project, some of the code there could be moved here, but I've not yet decided if that makes sense. (Specifically I'm thinking about operations working on bits, and logical operations such as and, or, xor.)