Skip to content

Releases: janet-lang/janet

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.

Janet 1.13.1

14 Dec 01:37
Compare
Choose a tag to compare

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.

Changes:

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