Releases: janet-lang/janet
Janet 1.2.0
This release brings a number of improvements to the language, including shorthand anonymous function literals, and new functions in the core library. You can also use jpm
to create binary executables from Janet code (provided you have a C compiler). Also comes with a handful of bug fixes.
- Add
take
anddrop
functions that are easier to use compared to the
existing slice functions. - Add optional default value to
get
. - Add function literal short-hand via
|
reader macro, which maps to the
short-fn
macro. - Add
int?
andnat?
functions to the core. - Add
(dyn :executable)
at top level to get what used to be
(process/args 0)
. - Add
:linux
to platforms returned by(os/which)
. - Update jpm to build standalone executables. Use
declare-executable
for this. - Add
use
macro. - Remove
process/args
in favor of(dyn :args)
. - Fix bug with Nanbox implementation allowing users to created
custom values of any type with typed array and marshal modules, which
was unsafe. - Add
janet_wrap_number_safe
to API, for converting numbers to Janets
where the number could be any 64 bit, user provided bit pattern. Certain
NaN values (which a machine will never generate as a result of a floating
point operation) are guarded against and converted to a default NaN value.
Janet 1.1.0
A small update to 1.0.0. This includes an important bug fix (issue #137) and several improvements to the jpm
tool. This also adds the table/clone
function to the core. See the changelog for details.
Janet 1.0.0
First non-alpha release of Janet. This introduces a number of changes to the language, including
the propagate
function, an improved meson build, a better parser API, a better os/execute
API, the ability to marshal and unmarshal PEGs, and more.
Changelog
- Add
with
macro for resource handling. - Add
propagate
function so we can "rethrow" signals after they are
intercepted. This makes signals even more flexible. - Add
JANET_NO_DOCSTRINGS
andJANET_NO_SOURCEMAPS
defines in janetconf.h
for shrinking binary size.
This seems to save about 50kB in most builds, so it's not usually worth it. - Update module system to allow relative imports. The
:cur:
pattern
inmodule/expand-path
will expand to the directory part of the current file, or
whatever the value of(dyn :current-file)
is. The:dir:
pattern gets
the directory part of the input path name. - Remove
:native:
pattern inmodule/paths
. - Add
module/expand-path
- Remove
module/*syspath*
andmodule/*headerpath*
in favor of dynamic
bindings:syspath
and:headerpath
. - Compiled PEGs can now be marshaled and unmarshaled.
- Change signature to
parser/state
- Add
:until
verb to loop. - Add
:p
flag tofiber/new
. - Add
file/{fdopen,fileno}
functions. - Add
parser/clone
function. - Add optional argument to
parser/where
to set parser byte index. - Add optional
env
argument toall-bindings
andall-dynamics
. - Add scratch memory C API functions for auto-released memory on next gc.
Scratch memory differs from normal GCed memory as it can also be freed normally
for better performance. - Add API compatibility checking for modules. This will let native modules not load
when the host program is not of a compatible version or configuration. - Change signature of
os/execute
to be much more flexible.
Janet 0.6.0
Hopefully last release before 1.0.0! This release brings a number of improvements since 0.5.0, including an improved build tool jpm
for building native modules and other tasks, an improved windows installer, and more. See the Changelog for more details. The windows installer seems to be flagged by windows defender, but should work just find and I promise is not a trojan :).
file/close
returns exit code when closing file opened withfile/popen
.- Add
os/rename
- Update windows installer to include tools like
jpm
. - Add
jpm
tool for building and managing projects. - Change interface to
cook
tool. - Add optional filters to
module/paths
to further refine import methods. - Add keyword arguments via
&keys
in parameter list. - Add
-k
flag for flychecking source. - Change signature to
compile
function. - Add
module/loaders
for custom loading functions. - Add external unification to
match
macro. - Add static library to main build.
- Add
janet/*headerpath*
and change location of installed headers. - Let
partition
take strings. - Haiku OS support
- Add
string/trim
,string/trimr
, andstring/triml
. - Add
dofile
function. - Numbers require at least 1 significant digit.
file/read
will return nil on end of file.- Fix various bugs.
Janet 0.5.0
Medium-sized update, with a number of improvements including dynamic scoping and some more debugging facilities. From the changelog:
- Fix some bugs with buffers.
- Add
trace
anduntrace
to the core library. - Add
string/has-prefix?
andstring/has-suffix?
to string module. - Add simple debugger to repl that activates on errors or debug signal
- Remove
*env*
and*doc-width*
. - Add
fiber/getenv
,fiber/setenv
, anddyn
, andsetdyn
. - Add support for dynamic bindings (via the
dyn
andsetdyn
functions). - Change signatures of some functions like
eval
which no longer takes
an optional environment. - Add printf function
- Make
pp
configurable with dynamic binding:pretty-format
. - Remove the
meta
function. - Add
with-dyns
for blocks with dynamic bindings assigned. - Allow leading and trailing newlines in backtick-delimited string (long strings).
These newlines will not be included in the actual string value.
v0.4.1
This version contains a number of updates and bug fixes. This biggest additions are the the int
module, for native integer types that don't fit in a double precision number, and new functions in the os
module.
Also, the repl is colorful now!
Check out the changelog for more information.
Version 0.4.0
0.4.0 release of Janet!
This release marks a big update with lots of changes to Janet, as you can see in the changelog! The most interesting are probably the addition of typed arrays and the ability to compile Janet to cross platform image files, which contain precompiled bytecode. Lots of bug fixes and smaller additions to the language, as well as the ability to create an amalgamated build for Janet. Attached are the two files janet.h
and janet.c
, which can be dropped into many projects to extend them with Janet scripting.
Janet should also start faster now, as the core library is precompiled to bytecode instead of being parsed and compile on startup.
The latest version of Janet is also a bit larger than previous version, and will now weigh in at around 300-400kB, depending on architecture, flags and OS. This footprint can be made smaller by disabling certain modules, like the peg module, typed array module, and assembler module.
0.3.0
Third main release of Janet!
This release brings a lot of functionality to Janet, not the least of which is the peg
module, which
allows for powerful pattern matching. Check out the new and improved website at https://janet-lang.org, as well as the new documentation and API docs.
0.2.0
0.1.0
The Janet Programming Language, first release!
Download prebuilt binaries for some systems here, or build from source. After downloading
the the artifact for your system, run janet simply by running the executable janet.exe
on windows, and janet
on other systems.