Skip to content

v0.11.0

Compare
Choose a tag to compare
@skx skx released this 17 Oct 17:12
· 246 commits to master since this release

This release features the addition of many new primitive functions, whether added to the golang core, or the standard library which is implemented in lisp itself.

We also restored test-coverage back to 100% in all our internal packages.

In brief the changes were:

  • Moved date/time functions into either "date:" or "time:" namespaces as appropriate.
    • Reported in #33, closed in #35.
  • Added new file functions (file:lines), (file:read), (file:stat), etc
    • Reported in #32, closed in #36.
  • Restored our test-coverage to 100%
    • Reported in #31, closed in #37.
  • Added a builtin function (alias) to alias functions.
    • (set! pr print) could have done the same thing, for example, but this makes intent clearer to read.
    • Reported in #38, closed in #38.
  • Added (directory:walk) to our standard-library.
    • This uses the new builtin (directory:entries) function.
    • Reported in #34, closed in #41.
  • Added (random) to choose a random integer.
    • Use that to implement (random:char), and (random:item)
    • Reported in #43, closed in #44.
  • Overhauled our README.md and documentation.
    • Reported in #40, closed in #42.
  • 100% consistency when functions are invoked with invalid counts of arguments
    • Implemented in #45.
  • Correctly pad hours, minutes, and seconds in the output of (hms)
    • Reported in #47, closed in #48.
  • Allow the use of regular expressions to select which help to view.
    • Reported in #50, closed in #54.
  • Allow writing to files, via (file:write ..)
    • Reported in #49, closed in #55.
  • Use (alias) to define (first) and (rest), rather than using duplication.
  • (range) now uses the upper bound inclusively.
    • This means (nat 10) and (seq 10) now stop at 10, not 9.
  • Added a new "-v" flag to our binary, to show our version.
    • Reported in #51, closed in #56.
  • Fixed the division function such that "(/ x)" is the same as 1/x.
    • reported in #52, closed in #57.
  • Allow (= .. ) (numerical equality test) to accept arbitrary arguments.
    • Reported in #53, resolved in #58.
  • Added (/= ..) function, for numerical inequality testing.
    • This returns true if all arguments are unique.
    • This returns false if any argument has been seen before.
    • Reported in #53, and resolved in #59.

Regressions

The only know regression is the failure to build this release upon Windows platforms, this was resolved in #60.

However I have still postponed the handling of #22:

  • Half of me thinks we leave as-is.
  • The other half of me thinks that we could add hacks.
    • But as noted they will spread, due to potentially arbitrarily deep nesting of scopes/environments.
  • Finally the third half of me thinks we could be even more explicit, via the use of some (upvalue ..)-like solution.
    • Explicit here means that we're being very explicit the author must mentally consider scopes, and adding a new form is more explicit than a magical third-argument to (set!..)

Future Plans

  • Nothing obvious springs to mind, though no doubt minor changes and additions will occur to me.

Feedback?

Something missing? A regression broke your build? Please file an issue.