Releases: hmxmilohax/arson
Releases · hmxmilohax/arson
v0.2.0: New tools; `Object` trait foundation
Tools
Added
arsonc
: converts between .dta and .dtb files, with both old-style and new-style encryption supported and auto-detected.arson-fmt
: formats .dta files according to generally-preferred conventions, with opt-out directive comments supported to skip parts of a file.
arson-core
Added
- A basic
Object
trait has been introduced for exposing arbitrary objects to scripts. Many details have yet to be fleshed out, but the basic functionality exists, and you can call methods on objects from script successfully. - In addition to the above, nodes can now store callable functions, which brings the storage capabilities up to par with the Milo implementation.
func
andclosure
script functions now exist for defining arbitrary functions and closing over variables/defining anonymous functions.
Changed
- The scripting context no longer uses a generic argument for storing user-defined states, and instead uses a dynamic state registration system which polymorphizes things.
div_rem
now returns its results by setting provided variables instead of returning an array.
Fixed
- Character escapes are now handled when loading script text.
- The argument order for
clamp
has been corrected.
arson-parse
Changed
- Comments and blank lines are now passed through to the AST in arson-parse, to help facilitate arson-fmt functionality.
Fixed
- Comments between directive components will no longer cause parsing errors, though their placement in the AST is not preserved accurately for technical reasons (too much complexity for a way of doing things that's unusual to begin with).
There are various other things which are not covered by this changelog for the sake of staying concise. A good deal of work went in since the last release to make things even better, and there's still much more work yet to come.
v0.1.0
A preview of what's been accomplished so far. There's still much to do, but this feels like a good milestone to rest on for now.
Enjoy :3
Implemented Funcs
Core
Operators
- Arithmetic:
++
--
+
+=
-
-=
*
*=
/
/=
%
%=
mod
div_rem
- Bitwise:
&
&=
|
|=
^
^=
~
mask_eq
- Logical:
&&
||
^^
!
- Comparison:
==
!=
>
>=
<
<=
- Escape:
quote
quasiquote
unquote
eval
'
`
,
Blocks
- Control flow:
if
if_else
unless
- Loops:
while
foreach
foreach_int
- Scoping:
do
Variable
- Macros:
kDataInt
kDataFloat
kDataString
kDataSymbol
kDataVar
kDataArray
kDataCommand
kDataProperty
kDataUnhandled
- Types:
type
- Meta:
set
set_var
var
Numeric
- Macros:
TRUE
FALSE
- Bits:
highest_bit
lowest_bit
count_bits
- Sign:
abs
sign
- Limit:
min
max
clamp
min_eq
max_eq
clamp_eq
- Rounding:
ceil
floor
trunc
round
- Conversion:
int
float
Array
- Size:
size
resize
reserve
- Elements:
elem
first_elem
last_elem
set_elem
- Manipulation:
push_back
pop_back
insert_elem
insert_elems
remove_elem
remove_elems
- Searching:
find
find_exists
find_elem
contains
- Sorting:
sort
sort_by
Stdlib
Math
- Macros:
PI
TAU
EULER
- Exponential:
pow
sqrt
cbrt
hypot
exp
exp2
expm1
log
log10
log2
- Trigonometry:
sin
cos
tan
asin
acos
atan
atan2
sinh
cosh
tanh
asinh
acosh
atanh
File System
basename
dirname
read_file
write_file
run
file_exists
file_read_only
Process
exit
abort
Stdio
print