Releases: janet-lang/janet
Janet 1.16.1
- 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 thejanet
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
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 todecalre-native
injpm
. 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 viajpm
. - 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
- 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
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
andgroup-by
to the core. - Sort keys in pretty printing output.
Janet 1.15.3
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
Fix a handful of bugs in the 1.15.0 release.
- Fix bug in windows version of
os/spawn
andos/execute
with setting environment variables. - Fix documentation typos.
- Fix peg integer reading combinators when used with capture tags.
Janet 1.15.0
1.15.0 brings only a few minor changes, mostly bug fixes.
- Fix
gtim
andltim
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
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 allowdef
andvar
inside to work as expected. - Use
(dyn :peg-grammar)
for passing a default grammar topeg/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 makeev/thread
easier to use. - Automatically set supervisor channel in
net/accept-loop
andnet/server
correctly.
Janet 1.14.1
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
andchan
argument toev/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
andbackref
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 fromloop
macros. Instead, use the:in
verb
which will now work on fibers as well as other data structures. - Define
next
,get
, andin
for fibers. This lets
each
,map
, and similar iteration macros can now iterate over fibers. - Remove macro
eachy
, which can be replaced byeach
. - Add
dflt
argument to find-index. - Deprecate
file/popen
in favor ofos/spawn
. - Add
:all
keyword toev/read
andnet/read
to make them more likefile/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
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.