Releases: snekkylang/snekky
Releases · snekkylang/snekky
GitHub Actions
Please download the latest binaries from the actions tab.
0.8.0
- Added support for multithreading (Example).
- Booleans now exist in bytecode.
- Added JSON encoder and decoder (Example)
- Added IO namespace (BytesOutput, Bytes).
- Added
continue
keyword. - Added and improved various array methods.
- Added
clone
method to arrays and hashes. - Duplicate constants will now be re-used.
- Properly handle deep-comparison of objects and arrays.
- Fixed nested breaks not working properly.
- Fixed various problems with object destructuring.
- Fixed parsing of chained equality operators.
- Catch illegal use of
return
,break
andcontinue
statements in compiler. - Improved command handling in REPL.
- Fixed
/clear
command in REPL not working properly. - Fixed REPL not working on Linux.
- Added missing keywords to REPL syntax highlighting.
- Fixed various typos in REPL.
- Added disassemble command to REPL (requires snekkyd in path).
0.7.0
- Added REPL.
- Added support for ranges (
a...b
anda..b
). - Added support for basic string escaping.
- Added various string methods (including
.contains
and.replace
). - Added support for regexes (
~/regex/g
). - Added support for
when
statements/expressions (Example). - Blocks can now be parsed as expressions.
- Fixed
<=
and>=
evaluating left and right twice.
0.6.0
- Bytecode dumped with
--dump
will now be compressed. - Added support for object members (eg.
[1, 2, 3].push(4)
). - Moved various std lib functions to object members.
- Added various new std lib functions.
- Added support for
for ... in
loops using iterators. - Added hash/array destructuring.
- Added support for variable assigns with operators (eg.
x += 2
). - Check whether provided parameters meet expected parameters count of function.
- Added simple HTTP client.
- Changed naming of std functions to camel case.
- Replaced
env
array with parent ponter tree to prevent issues in closures. - Array index operator now evaluates to
null
if index does not exist instead of throwing an error. - Made different data types inequal to each other.
0.5.0
- Added ability to import external source files using
import <path>
. - Added namespacing for std lib functions.
Sys.println(s)
Sys.print(s)
Sys.read_line()
String.length(s)
String.char_at(s, n)
String.split(s, d)
Math.PI
Math.abs(n)
Math.floor(n)
Math.sqrt(n)
File.read_utf8(p)
File.read_utf8(p, s)
Array.push(a, v)
Array.pop(a)
Array.length(a)
Array.map(a, cb)
- Added support for single-line comments using
//
. - Added
null
type. - Added support for
!=
operator. - Added support for
<=
and>=
operators. - Added support for
&&
and||
operators (short-circuit evaluation). - Added support for
else if
. - Added
--no-debug
flag to omit debug data from bytecode. - Expressions now implicitly return the last expression if
;
is omitted. - Expressions that don't evaluate to a value now return
null
. - Values of objects can now be accessed using
.
({test: 1}.test
). - Changed string concatenation operator to
><
. - Fixed wrong scope of function parameters.
- Fixed unary operator not working properly on object/array indices.
- Snekky will no longer evaluate the bytecode if
--dump
flag is present.
0.4.0
- Improved performance.
- Input filename can now be specified in the first argument (
Snekky <filename>
). - Added flag to dump generated bytecode (
Snekky <filename> --dump
). .bite
bytecode files can now be directly executed.- Functions can now implicitly return a value (no semicolon after last statement).
0.3.0
- Added support for arrays.
- Added support for hashes.
- Added
array_length
,array_push
andsqrt
builtin functions. - Snekky bytecode could now be distributed (contains constant pool and debug tables).
- Comparison is now supported for all data types.
return
-statements can now be used without a return value.