Skip to content

Releases: skx/critical

release-0.7

21 Jul 17:04
@skx skx
Compare
Choose a tag to compare
  • Updated how comments are handled (beginning with "#" or "//").
    • Reported in #27, resolved in #28.
  • Continue execution after encountering bare literals.
    • Reported in #30, resolved in #31.
    • NOTE: This is not what "real TCL" does, that would show an error.
  • Quote the return value from repeat and for
    • This stops output from being executed, as reported in #29.
    • Fixed in #32.
  • Test case coverage has been returned to 100%.

release-0.6

02 Jul 06:42
@skx skx
Compare
Choose a tag to compare

This release adds the power-operator (**), and updates the API of the interpreter to allow the execution of a script multiple times.

No real changes other than the return value(s) of the constructor changing.

release-0.5

30 Jun 05:05
@skx skx
Compare
Choose a tag to compare

This release updates the error-handling enough that all the sample code works, and we could reinstate the failure-case for invocations of unknown words.

The new env word was added, to retrieve the value of an environmental variable, and test-cases were added to our environment package - which were missing - now the coverage of the whole codebase is 100%.

release-0.4

28 Jun 16:41
@skx skx
c6423aa
Compare
Choose a tag to compare
  • exit no longer calls os.Exit.
    • Instead it returns an error-code that can be caught by applications which embed this application.
  • The addition of two new primitives to expr:
    • % for modulus.
    • != for numeric inequality-testing.
  • 100% test coverage of the core packages.
    • As updated in #22.
  • Added complete example of embedding the interpreter inside a host-application.
    • As implemented in #24.

release-0.3

24 Jun 04:34
@skx skx
Compare
Choose a tag to compare

This release updates the lexer a little, to revert a change which broke comments in some circumstances.

Beyond that I've added a bunch of examples beneath examples/, in addition to the two main samples which were already highlighted in the README file:

  • input.tcl - An overview of how TCL can be used.
  • picol.tcl - The sample code from the picol project, which works here too.

release-0.2

23 Jun 14:15
@skx skx
Compare
Choose a tag to compare

This release features a small number of fixes and improvements:

  • Correctly handle the count of arguments in user-defined functions.
    • Reported in #15, and resolved in #17.
  • Correctly handle return statements even within if
    • Reported in #16, and resolved in #18.
    • This required another minor tweak, but seems robust now and test-cases will ensure there are no further regressions.
  • Updated the standard library to add some new procedures, available to all scripts by default:
    • min(a, b)
    • max(a, b)
    • loop(var, min, max, body)
  • Allow escaping $ inside strings, via double-quoting:
    • puts "$$a is $a"

release-0.1

22 Jun 17:58
@skx skx
Compare
Choose a tag to compare

This is our initial release! As per the README.md file we've got a working set of core primitives:

  • append, break, continue, decr, eval, exit, expr, for, if, incr, proc, puts, return, set, & while.

We also have 100% test-coverage of the core packages which are used to implement the interpreter, and a decent range of sample code both demonstrating and using the language.

Future releases might extend the primitives, add more facilities, or cleanup areas of the implementation but this is a good base upon which to build.