mirror of
https://github.com/janet-lang/janet
synced 2026-05-14 17:32:20 +00:00
962cd7e5f5
This is useful for reading from files.
14 KiB
14 KiB
Changelog
All notable changes to this project will be documented in this file.
Unreleased
- Remove
==,not==,order<,order>,order<=, andorder>=. Instead, use the normal comparison and equality functions. - Let abstract types define a hash function and comparison/equality semantics. This lets abstract types much better represent value types. This adds more fields to abstract types, which will generate warnings when compiled against other versions.
- Remove Emscripten build. Instead, use the amalgamated source code with a custom toolchain.
- Update documentation.
- Add
module/add-paths - Add
file/temp - Small bug fixes
- Allow signaling from C functions (yielding) via janet_signalv. This makes it easy to write C functions that work with event loops, such as in libuv or embedded in a game.
- Add
defer - Add
assert - Add
when-with - Add
if-with - Fix thread module issue where sometimes decoding a message failed.
- Fix segfault regression when macros are called with bad arity.
1.6.0 - 2019-12-22
- Add
thread/module to the core. - Allow seeding RNGs with any sequence of bytes. This provides
a wider key space for the RNG. Exposed in C as
janet_rng_longseed. - Fix issue in
resumeand similar functions that could cause breakpoints to be skipped. - Add a number of new math functions.
- Improve debugger experience and capabilities. See examples/debugger.janet for what an interactive debugger could look like.
- Add
debug/step(janet_step in the C API) for single stepping Janet bytecode. - The built in repl now can enter the debugger on any signal (errors, yields, user signals, and debug signals). To enable this, type (setdyn :debug true) in the repl environment.
- When exiting the debugger, the fiber being debugged is resumed with the exit value
of the debug session (the value returned by
(quit return-value), or nil if user typed Ctrl-D). (quit)can take an optional argument that is the return value. If a module contains(quit some-value), the value of that module returned to(require "somemod")is the return value. This lets module writers completely customize a module without writing a loader.- Add nested quasiquotation.
- Add
os/cryptorand - Add
prinfandeprinfto be have likeprintfandeprintf. The latter two functions now including a trailing newline, like the other print functions. - Add nan?
- Add
janet_into C API. - Add
truthy? - Add
os/environ - Add
buffer/fillandarray/fill - Add
array/new-filled - Use
(doc)with no arguments to see available bindings and dynamic bindings. jpmwill useCCandARenvironment variables when compiling programs.- Add
comptimemacro for compile time evaluation. - Run
mainfunctions in scripts if they exist, just like jpm standalone binaries. - Add
protectmacro. - Add
root-envto get the root environment table. - Change marshalling protocol with regard to abstract types.
- Add
show-pathstojpm. - Add several default patterns, like
:dand:s+, to PEGs. - Update
jpmpath settings to make usingjpmeasier on non-global module trees. - Numerous small bug fixes and usability improvements.
1.5.1 - 2019-11-16
- Fix bug when printing buffer to self in some edge cases.
- Fix bug with
jpmon windows. - Fix
updatereturn value.
1.5.0 - 2019-11-10
os/datenow defaults to UTC.- Add
--testflag to jpm to test libraries on installation. - Add
math/rng,math/rng-int, andmath/rng-uniform. - Add
infunction to index in a stricter manner. Conversely,getwill now not throw errors on bad keys. - Indexed types and byte sequences will now error when indexed out of range or with bad keys.
- Add rng functions to Janet. This also replaces the RNG behind
math/randomandmath/seedrandomwith a consistent, platform independent RNG. - Add
with-varsmacro. - Add the
quickbincommand to jpm. - Create shell.c when making the amalgamated source. This can be compiled with janet.c to make the janet interpreter.
- Add
cli-mainfunction to the core, which invokes Janet's CLI interface. This basically moves what was init.janet into boot.janet. - Improve flychecking, and fix flychecking bugs introduced in 1.4.0.
- Add
prin,eprint,eprintfandeprinfunctions. The functions prefix with e print to(dyn :err stderr) - Print family of functions can now also print to buffers
(before, they could only print to files.) Output can also
be completely disabled with
(setdyn :out false). printfis now a c function for optimizations in the case of printing to buffers.
1.4.0 - 2019-10-14
- Add
quitfunction to exit from a repl, but not always exit the entire application. - Add
update-pkgsto jpm. - Integrate jpm with https://github.com/janet-lang/pkgs.git. jpm can now install packages based on their short names in the package listing, which can be customized via an env variable.
- Add
varfnmacro - Add compile time arity checking when function in function call is known.
- Added
sliceto the core library. - The
*/slicefamily of functions now can take nil as start or end to get the same behavior as the defaults (0 and -1) for those parameters. string/functions that take a pattern to search for will throw an error when receiving the empty string.- Replace (start:end) style stacktrace source position information with line, column. This should be more readable for humans. Also, range information can be recovered by re-parsing source.
1.3.1 - 2019-09-21
- Fix some linking issues when creating executables with native dependencies.
- jpm now runs each test script in a new interpreter.
- Fix an issue that prevent some valid programs from compiling.
- Add
meanto core. - Abstract types that implement the
:+,:-,:*,:/,:>,:==,:<,:<=, and:>=methods will work with the corresponding built-in arithmetic functions. This means built-in integer types can now be used as normal number values in many contexts. - Allow (length x) on typed arrays an other abstract types that implement the :length method.
1.3.0 - 2019-09-05
- Add
get-in,put-in,update-in, andfreezeto core. - Add
jpm run ruleandjpm rulesto jpm to improve utility and discoverability of jpm. - Remove
cookmodule and movepathmodule to https://github.com/janet-lang/path.git. The functionality incookis now bundled directly in thejpmscript. - Add
buffer/formatandstring/formatformat flagsQandqto print colored and non-colored single-line values, similar toPandp. - Change default repl to print long sequences on one line and color stacktraces if color is enabled.
- Add
backmatchpattern for PEGs. - jpm detects if not in a Developer Command prompt on windows for a better error message.
- jpm install git submodules in dependencies
- Change default fiber stack limit to the maximum value of a 32 bit signed integer.
- Some bug fixes with
jpm - Fix bugs with pegs.
- Add
os/archto get ISA that janet was compiled for - Add color to stacktraces via
(dyn :err-color)
1.2.0 - 2019-08-08
- Add
takeanddropfunctions 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 theshort-fnmacro. - Add
int?andnat?functions to the core. - Add
(dyn :executable)at top level to get what used to be(process/args 0). - Add
:linuxto platforms returned by(os/which). - Update jpm to build standalone executables. Use
declare-executablefor this. - Add
usemacro. - Remove
process/argsin 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_safeto 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.
1.1.0 - 2019-07-08
- Change semantics of
-lflag to be import rather than dofile. - Fix compiler regression in top level defs with destructuring.
- Add
table/clone. - Improve
jpmtool with git and dependency capabilities, as well as better module uninstalls.
1.0.0 - 2019-07-01
- Add
withmacro for resource handling. - Add
propagatefunction so we can "rethrow" signals after they are intercepted. This makes signals even more flexible. - Add
JANET_NO_DOCSTRINGSandJANET_NO_SOURCEMAPSdefines 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-pathwill 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:syspathand:headerpath. - Compiled PEGs can now be marshaled and unmarshaled.
- Change signature to
parser/state - Add
:untilverb to loop. - Add
:pflag tofiber/new. - Add
file/{fdopen,fileno}functions. - Add
parser/clonefunction. - Add optional argument to
parser/whereto set parser byte index. - Add optional
envargument toall-bindingsandall-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/executeto be much more flexible.
0.6.0 - 2019-05-29
file/closereturns exit code when closing file opened withfile/popen.- Add
os/rename - Update windows installer to include tools like
jpm. - Add
jpmtool for building and managing projects. - Change interface to
cooktool. - Add optional filters to
module/pathsto further refine import methods. - Add keyword arguments via
&keysin parameter list. - Add
-kflag for flychecking source. - Change signature to
compilefunction. - Add
module/loadersfor custom loading functions. - Add external unification to
matchmacro. - Add static library to main build.
- Add
janet/*headerpath*and change location of installed headers. - Let
partitiontake strings. - Haiku OS support
- Add
string/trim,string/trimr, andstring/triml. - Add
dofilefunction. - Numbers require at least 1 significant digit.
file/readwill return nil on end of file.- Fix various bugs.
0.5.0 - 2019-05-09
- Fix some bugs with buffers.
- Add
traceanduntraceto 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
dynandsetdynfunctions). - Change signatures of some functions like
evalwhich no longer takes an optional environment. - Add printf function
- Make
ppconfigurable with dynamic binding:pretty-format. - Remove the
metafunction. - Add
with-dynsfor 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.
0.4.1 - 2019-04-14
- Squash some bugs
- Peg patterns can now make captures in any position in a grammar.
- Add color to repl output
- Add array/remove function
- Add meson build support
- Add int module for int types
- Add meson build option
- Add (break) special form and improve loop macro
- Allow abstract types to specify custom tostring method
- Extend C API for marshalling abstract types and other values
- Add functions to
osmodule.
0.4.0 - 2019-03-08
- Fix a number of smaller bugs
- Added :export option to import and require
- Added typed arrays
- Remove
callable?. - Remove
tuple/appendandtuple/prepend, which may have seemed likeO(1)operations. Instead, use thesplicespecial to extend tuples. - Add
-mflag to main client to allow specifying where to load system modules from. - Add
-cflag to main client to allow compiling Janet modules to images. - Add
string/formatandbuffer/format. - Remove
string/prettyandstring/number. make-imagefunction creates pre compiled images for janet. These images link to the core library. They can be loaded via require or manually viaload-image.- Add bracketed tuples as tuple constructor.
- Add partition function to core library.
- Pre-compile core library into an image for faster startup.
- Add methods to parser values that mirror the api.
- Add janet_getmethod to CAPI for easier use of method like syntax.
- Add get/set to abstract types to allow them to behave more like objects with methods.
- Add parser/insert to modify parser state programmatically
- Add debug/stacktrace for easy, pretty stacktraces
- Remove the status-pp function
- Update API to run-context to be much more sane
- Add :lflags option to cook/make-native
- Disallow NaNs as table or struct keys
- Update module resolution paths and format
0.3.0 - 2019-01-26
- Add amalgamated build to janet for easier embedding.
- Add os/date function
- Add slurp and spit to core library.
- Added this changelog.
- Added peg module (Parsing Expression Grammars)
- Move hand written documentation into website repository.