Skip to content

@bakpakin bakpakin released this Mar 17, 2021

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
  • 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.
Assets 11

@bakpakin bakpakin released this Feb 28, 2021

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.
Assets 11

@bakpakin bakpakin released this Feb 15, 2021

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.
Assets 11
Feb 15, 2021
1.15.1 release.

@bakpakin bakpakin released this Feb 9, 2021

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).
Assets 11

@bakpakin bakpakin released this Jan 23, 2021

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.
Assets 11

@bakpakin bakpakin released this Jan 19, 2021

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.
Assets 11

@bakpakin bakpakin released this Dec 14, 2020

This release brings lots of bug fixes, improvements, and new functions and macros. The largest change is the addition of the new ev/ module which brings evented IO to Janet's core. The evented IO can be used to interact with the net/ module, as well as with the native file system with os/open. The ev/ module is still in beta, so more functions may be added and interoperability with other parts of the system, including sub processes and threads, may come in future releases.

Besides the new ev/ module, 1.13.1 also brings improvements to pegs, module loading, and more.

Those embedding Janet or managing packages should also note that janetconf.h is also no longer needed to supplement janet.h when embedding or installing janet - it is inlined as part of the amalgamation process. janetconf.h is no longer part of the release files for Janet.


  • Pretty printing a table with a prototype will look for :_name instead of :name
    in the prototype table to tag the output.
  • match macro implementation changed to be tail recursive.
  • Adds a :preload loader which allows one to manually put things into module/cache.
  • Add buffer/push function.
  • Backtick delimited strings and buffers are now reindented based on the column of the
    opening delimiter. Whitespace in columns to the left of the starting column is ignored unless
    there are non-space/non-newline characters in that region, in which case the old behavior is preserved.
  • Argument to (error) combinator in PEGs is now optional.
  • Add (line) and (column) combinators to PEGs to capture source line and column.
    This should make error reporting a bit easier.
  • Add merge-module to core.
  • During installation and release, merge janetconf.h into janet.h for easier install.
  • Add upscope special form.
  • os/execute and os/spawn can take streams for redirecting IO.
  • Add :parser and :read parameters to run-context.
  • Add os/open if ev is enabled.
  • Add os/pipe if ev is enabled.
  • Add janet_thread_current(void) to C API
  • Add integer parsing forms to pegs. This makes parsing many binary protocols easier.
  • Lots of updates to networking code - now can use epoll (or poll) on linux and IOCP on windows.
  • Add ev/ module. This exposes a fiber scheduler, queues, timeouts, and other functionality to users
    for single threaded cooperative scheduling and asynchronous IO.
  • Add net/accept-loop and net/listen. These functions break down net/server into it's essential parts
    and are more flexible. They also allow further improvements to these utility functions.
  • Various small bug fixes.
Assets 11
Dec 13, 2020
Prepare for 1.13.0 initial release.

@bakpakin bakpakin released this Sep 22, 2020

Small updates that includes a bugfix and the addition of :pipe to os/spawn.

  • Add janet_try and janet_restore to C API.
  • Fix os/execute regression on windows.
  • Add :pipe option to os/spawn.
  • Fix docstring typos.
Assets 12