Releases: ArkScript-lang/Ark
Releases · ArkScript-lang/Ark
ArkScript v4.6.0
Immutable
release. Only release title and notes can be modified.
Deprecations
std.Rangehas been entirely deprecated and is scheduled for removalbitwisemodule is deprecated in favor of new builtins, included instd.Math
Added
- standard library:
- list:slice1
- list:first
- list:last
- list:cumulativeSum
- list:cumulativeProduct
- list:zeros
- list:ones
- string:lpad
- string:rpad
- string:ascii?
- string:first
- string:last
- string:codepoints
- math:countOnes
- math:countZeros
- math:bitNot
- math:bitAnd
- math:bitOr
- math:bitXor
- math:lshift
- math:rshift
- math:bitCeil
- math:bitFloor
- math:bitWidth
- math:countLeftZeros
- math:countLeftOnes
- math:countRightZeros
- math:countRightOnes
- math:circularLeftShift
- math:circularRightShift
- math:toBase
- math:countDigits
- new experimental builtin
builtin__string:codepointsreturning the Unicode codepoints of a string as a list of numbers - new bitwise builtins
Changed
$reprshows the correct representation for macros$symcataccepts symbols and strings as its first argumentmath:powuses a more precise way of computing values when inputs are integers- docker images use alpine 3.23 as a base instead of 3.21
ArkScript v4.5.2
Immutable
release. Only release title and notes can be modified.
Changed
- fix compiler segfault when there is no variable to mark as unreachable
ArkScript v4.5.1
Immutable
release. Only release title and notes can be modified.
Added
- special error message when trying to use a hidden symbol due to importing
Changed
- avoid generating
LOAD_FAST_BY_INDEXinstructions when trying to fetch a potentially unreachable variable
ArkScript v4.5.0
Immutable
release. Only release title and notes can be modified.
Breaking changes
- removed
list:permutationsWithReplacement(deprecated in 4.4.0) list:permutationsnow produces real permutations and not combinations (deprecated in 4.4.0)
Added
- added new macro
$gensym, to generate a unique symbol identifier to use in macros append,concat, andpopcan be used as values- new
ptrcommand for the debugger, printing the VM pointers (ip, pp, sp) - compile time arity check when performing a tail call
string:utf8lento compute the number of codepoints in a string- new
tracecommand for the debugger, printing the last executed instructions - ability to build ArkScript statically via CMake using
-DARK_STATIC=On
Changed
- all paths inside
ifshould return a value, when used as an expression. If anelsebranch is missing,nilwill be returned - new compile time error when trying to use
append!,concat!,pop!,@=and@@=as values - arguments in tail calls are loaded by value and not by reference
string:ordchecks that it get only 1 utf8 character
ArkScript v4.5.0-1
Immutable
release. Only release title and notes can be modified.
Breaking changes
- removed
list:permutationsWithReplacement(deprecated in 4.4.0) list:permutationsnow produces real permutations and not combinations (deprecated in 4.4.0)
Added
- added new macro
$gensym, to generate a unique symbol identifier to use in macros append,concat, andpopcan be used as values- new
ptrcommand for the debugger, printing the VM pointers (ip, pp, sp) - compile time arity check when performing a tail call
string:utf8lento compute the number of codepoints in a string
Changed
- all paths inside
ifshould return a value, when used as an expression. If anelsebranch is missing,nilwill be returned - new compile time error when trying to use
append!,concat!,pop!,@=and@@=as values - arguments in tail calls are loaded by value and not by reference
string:ordchecks that it get only 1 utf8 character
ArkScript v4.4.1
Immutable
release. Only release title and notes can be modified.
Breaking changes
- in function calls, the function to call is now always evaluated first
- in function calls, the arguments are now evaluated from left to right
Added
- the bytecode reader can print the argument of a
PUSH_RETURN_ADDRESSinstruction as a hex number - new super instruction
CALL_SYMBOL_BY_INDEXto optimise aLOAD_FAST_BY_INDEXfollowed by aCALL
Changed
- instruction counter in the bytecode reader are displayed in hex, and count each instruction instead of each byte
let/mut/setpush a copy of their value when used as expression (instead of an internal reference)
Removed
- removed a nearly never emitted
GET_CURRENT_PAGE_ADDRinstruction, since it's now always optimised withCALLinto aCALL_CURRENT_PAGEinstruction - removed
list:size,dict:size,dict:contains,math:evenandmath:oddsince they were deprecated since ArkScript 4.2.0
ArkScript v4.4.0
Immutable
release. Only release title and notes can be modified.
Deprecations
list:permutationsis deprecated in favor oflist:combinationslist:permutationsWithReplacementis deprecated in favor oflist:combinationsWithReplacement
Added
- new debugger commands:
stack <n>andlocals <n>to print the values on the stack and in the current locals scope - custom format specifiers for lists:
:nto remove surrounding brackets,:c/:ncto use,as a separator instead of,:l/:nlto use\nas a separator,:?sto format as an escaped quoted string,:sto format as a quoted string
formatcan use format specifiers for integers:b,#b,B,#B,c,d,o,x,#x,X, and#Xif the argument is an integer- display a warning to
stderrwhen using a deprecated function/value (checks for@deprecatedinside the attached comment of functions / values)
Changed
pop!can return the removed value@=and@@=return the inserted valueappend!andconcat!return the modified listlet,mutandsetcan return the assigned value- fix formatter: when the condition of a
whileloop is on multiple lines, add the right amount of indentation before it
ArkScript v4.3.3
Immutable
release. Only release title and notes can be modified.
Changed
- runtime type checking errors are on stderr instead of stdout
- runtime exceptions are on stderr instead of stdout
ArkScript v4.3.2
Immutable
release. Only release title and notes can be modified.
Changed
- VM error outputs are on stderr instead of stdout
ArkScript v4.3.1
Immutable
release. Only release title and notes can be modified.
Added
- new
TAIL_CALL_SELFinstruction to take care of tail calls in functions: jumps to address 0 in the current page, and reset the scope
Changed
- error outputs are on stderr instead of stdout