Skip to content

Releases: janet-lang/janet

Janet 1.17.0

21 Aug 19:22
Compare
Choose a tag to compare

Major release adding lots of new functionality for threading, channels, and other flow control. The thread/ module has been deprecated and will be removed in the next release, jpm has been refactored and completely refreshed in janet-lang/jpm, and more.

This release, as per usually, was made possible plenty of contributors who would test, fix bugs, and contribute code to this latest release. Many thanks!

Travis-CI, our macOS CI has also been retired so we are in need of new macOS CI integration. Thankfully, Testing on BSD with clang for source hut gives fairly good coverage.

Changelog:

  • Add the -E flag for one-liners with the short-fn syntax for argument passing.
  • Add support for threaded abstract types. Threaded abstract types can easily be shared between threads.
  • Deprecate the thread library. Use threaded channels and ev instead.
  • Channels can now be marshalled.
  • Add the ability to close channels with ev/chan-close (or :close).
  • Add threaded channels with ev/thread-chan.
  • Add JANET_FN and JANET_REG macros to more easily define C functions that export their source mapping information.
  • Add janet_interpreter_interupt and janet_loop1_interrupt to interrupt the interpreter while running.
  • Add table/clear
  • Add build option to disable the threading library without disabling all threads.
  • Remove JPM from the main Janet distribution. Instead, JPM must be installed
    separately like any other package.
  • Fix issue with ev/go when called with an initial value and supervisor.
  • Add the C API functions janet_vm_save and janet_vm_load to allow
    saving and restoring the entire VM state.

Janet 1.16.1

10 Jun 20:28
Compare
Choose a tag to compare
  • Add maclintf - a utility for adding linting messages when inside macros.
  • Print source code of offending line on compiler warnings and errors.
  • Fix some issues with linting and re-add missing make docs.
  • Allow controlling linting with dynamic bindings :lint-warn, :lint-error, and :lint-levels.
  • Add -w and -x command line flags to the janet binary to set linting thresholds.
    linting thresholds are as follows:
    • :none - will never be trigger.
    • :relaxed - will only trigger on :relaxed lints.
    • :normal - will trigger on :relaxed and :normal lints.
    • :strict - will trigger on :strict, :normal, and :relaxed lints. This will catch the most issues
      but can be distracting.

Janet 1.16.0

30 May 18:30
Compare
Choose a tag to compare

This release brings a number of new features, including compiler warnings, a deprecation mechanism, and the removal of the tarray module from the core.

  • Add color documentation to the doc macro - enable/disable with (dyn :doc-color).
  • Remove simpler HTML docs from distribution - use website or built-in documentation instead.
  • Add compiler warnings and deprecation levels.
  • Add as-macro to make using macros within quasiquote easier to do hygienically.
  • Expose JANET_OUT_OF_MEMORY as part of the Janet API.
  • Add native-deps option to decalre-native in jpm. This lets native libraries link to other
    native libraries when building with jpm.
  • Remove the tarray module. The functionality of typed arrays will be moved to an external module
    that can be installed via jpm.
  • Add from-pairs to core.
  • Add JPM_OS_WHICH environment variable to jpm to allow changing auto-detection behavior.
  • The flychecker will consider any top-level calls of functions that start with define- to
    be safe to execute and execute them. This allows certain patterns (like spork/path) to be
    better processed by the flychecker.

Janet 1.15.5

25 Apr 21:11
Compare
Choose a tag to compare
  • Add declare-headers to jpm.
  • Fix error using unix pipes on BSDs.
  • Support .cc and .cxx extensions in jpm for C++ code.
  • Change networking code to not create as many HUP errors.
  • Add net/shutdown to close sockets in one direction without hang ups.
  • Update code for printing the debug repl

Janet 1.15.4

17 Mar 01:19
Compare
Choose a tag to compare

This patch release improves Janet's pretty printer as well as tweaks some build settings.

  • Increase default nesting depth of pretty printing to JANET_RECURSION_GUARD
  • Update meson.build
  • Add option to automatically add shebang line in installed scripts with jpm.
  • Add partition-by and group-by to the core.
  • Sort keys in pretty printing output.

Janet 1.15.3

28 Feb 19:49
Compare
Choose a tag to compare

Minor patch to Janet, fixes a vm bug and adds a new peg combinator.

  • Fix a fiber bug that occured in deeply nested fibers
  • Add unref combinator to pegs.
  • Small docstring changes.

Janet 1.15.2

15 Feb 18:54
Compare
Choose a tag to compare

Fix a handful of bugs in the 1.15.0 release.

  • Fix bug in windows version of os/spawn and os/execute with setting environment variables.
  • Fix documentation typos.
  • Fix peg integer reading combinators when used with capture tags.

Janet 1.15.0

09 Feb 03:48
Compare
Choose a tag to compare

1.15.0 brings only a few minor changes, mostly bug fixes.

  • Fix gtim and ltim bytecode instructions on non-integer values.
  • Clean up output of flychecking to be the same as the repl.
  • Change behavior of debug/stacktrace with a nil error value.
  • Add optional argument to parser/produce.
  • Add no-core option to creating standalone binaries to make execution faster.
  • Fix bug where a buffer overflow could be confused with an out of memory error.
  • Change error output to file:line:column: message. Column is in bytes - tabs
    are considered to have width 1 (instead of 8).

Janet 1.14.2

23 Jan 21:44
Compare
Choose a tag to compare

This patch release fixes some bugs with the ev/module and adds preliminary support for ev/thread, which can spawn and wait for threads without blocking the event loop. Communicating with threads should still be done with os/pipe.

  • Allow JANET_PROFILE env variable to load a profile before loading the repl.
  • Update tracev macro to allow def and var inside to work as expected.
  • Use (dyn :peg-grammar) for passing a default grammar to peg/compile instead of loading
    default-peg-grammar directly from the root environment.
  • Add ev/thread for combining threading with the event loop.
  • Add ev/do-thread to make ev/thread easier to use.
  • Automatically set supervisor channel in net/accept-loop and net/server correctly.

Janet 1.14.1

19 Jan 00:01
Compare
Choose a tag to compare

This release brings lots of improvements to the ev/ module, as well as bug fixes.

  • Add doc-of for reverse documentation lookup.
  • Add ev/give-supervsior to send a message to the supervising channel.
  • Add ev/gather and chan argument to ev/go. This new argument allows "supervisor channels"
    for fibers to enable structured concurrency.
  • Make -k flag work on stdin if no files are given.
  • Add flycheck function to core.
  • Make backmatch and backref more expressive in pegs.
  • Fix buggy string/split.
  • Add fiber/last-value to get the value that was last yielded, errored, or signaled
    by a fiber.
  • Remove :generate verb from loop macros. Instead, use the :in verb
    which will now work on fibers as well as other data structures.
  • Define next, get, and in for fibers. This lets
    each, map, and similar iteration macros can now iterate over fibers.
  • Remove macro eachy, which can be replaced by each.
  • Add dflt argument to find-index.
  • Deprecate file/popen in favor of os/spawn.
  • Add :all keyword to ev/read and net/read to make them more like file/read. However, we
    do not provide any :line option as that requires buffering.
  • Change repl behavior to make Ctrl-C raise SIGINT on posix. The old behavior for Ctrl-C,
    to clear the current line buffer, has been moved to Ctrl-Q.
  • Importing modules that start with / is now the only way to import from project root.
    Before, this would import from / on disk. Previous imports that did not start with . or /
    are now unambiguously importing from the syspath, instead of checking both the syspath and
    the project root. This is backwards incompatible and dependencies should be updated for this.
  • Change hash function for numbers.
  • Improve error handling of dofile.
  • Bug fixes in networking and subprocess code.
  • Use markdown formatting in more places for docstrings.