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
andos/spawn
can take streams for redirecting IO.- Add
:parser
and:read
parameters torun-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
andnet/listen
. These functions break downnet/server
into it's essential parts
and are more flexible. They also allow further improvements to these utility functions. - Various small bug fixes.