Skip to content

Releases: ArkScript-lang/Ark

ArkScript v3.0.11

21 May 12:39

Choose a tag to compare

Change Log

3.0.11

Added

  • member function resolve(Args&& args...) to Value, callable by plugins to resolve the value of a function called with specific arguments given by the plugin
  • (fill qu value) create a list of qu values
  • (setListAt list at new-value) modify a list in place and return the new list value
  • adding UTF-8 support in programs (experimental)
  • more benchmarks
  • on error, the VM now display the value of each variable in the current scope
  • added thirdparty/madureira/String, to replace std::string in Ark::internal::Value which was heavy and slower than the new implementation
  • minimizing the size of the usertype

Changed

  • UserType does not need to be given a manually defined type id but relies on typeid(T)
  • performance boost of the VM by using pointers to avoid unecessary copies
  • renaming isNaN to NaN?, isInf to Inf? for uniformisation (see empty?, nil?)
  • renaming CLI feature options:
    • -ffunction-arity-check becomes -ffac, same for the -fno- version
    • -fauthorize-invalid-token-after-paren becomes -faitap, some for the -fno- version
  • improving compiler performances by using const ref when passing nodes around
  • renaming the FFI "builtins" because it's not a FFI but a set of functions using the VM API
  • the VM should display a backtrace even if an unknown error occured
  • transforming inline code from the vm into not inline code when possible to speed compilation, using macros instead of inline functions
  • smaller value class
  • smaller vm frames
  • forked madureira/String and modified it for the needs of the project, added it as a submodule
  • removed the VM pointer from the value class to make it lighter, now the VM is sending a pointer of itself to the C procedures
  • removed const and type from value, now using a uint8_t to store those informations

Removed

  • removed NFT from the internal API to rely only on the value type

ArkScript v3.0.11-pre

28 Apr 21:41

Choose a tag to compare

ArkScript v3.0.11-pre Pre-release
Pre-release

3.0.11-pre

Added

  • member function resolve(Args&& args...) to Value, callable by plugins to resolve the value of a function called with specific arguments given by the plugin
  • (fill qu value) create a list of qu values
  • (setListAt list at new-value) modify a list in place and return the new list value
  • adding UTF-8 support in programs (experimental)
  • more benchmarks

Changed

  • UserType does not need to be given a manually defined type id but relies on typeid(T)
  • performance boost of the VM by using pointers to avoid unecessary copies
  • renaming isNaN to NaN?, isInf to Inf? for uniformisation (see empty?, nil?)
  • renaming CLI feature options:
    • -ffunction-arity-check becomes -ffac, same for the -fno- version
    • -fauthorize-invalid-token-after-paren becomes -faitap, some for the -fno- version
  • improving compiler performances by using const ref when passing nodes around
  • renaming the FFI "builtins" because it's not a FFI but a set of functions using the VM API
  • the VM should display a backtrace even if an unknown error occured
  • transforming inline code from the vm into not inline code when possible to speed compilation, using macros instead of inline functions

Removed

  • removed NFT from the internal API to rely only on the value type

ArkScript v3.0.10

09 Feb 16:13

Choose a tag to compare

3.0.10

Added

  • adding sort to sort a list
  • added \t, \n, \v and \r escape codes (available in strings only)
  • adding listFiles which returns a list of paths (strings)
  • adding (makeDir path) and (removeFiles ...)
  • added (filter func list) in lib/Functional/Functional.ark
  • adding puts. Does the same thing as print but doesn't print a newline character
  • added a msgpack module by @PierrePharel
  • added a user type (to be defined in C++)
  • adding a not operator
  • adding an http module by @SuperFola

Changed

  • updated output of tests with number of passed tests
  • updated REPL so that it doesn't try to compile blank lines or comments, by @rstefanic
  • the option -d|--debug is now repeatable, to set a debug level. Can go from 1 (compilation information) to 3 (a lot of information).
  • better precision when using (time)
  • better tests presentation
  • moved the modules to https://github.com/ArkScript-lang/modules

ArkScript v3.0.9

26 Oct 22:10

Choose a tag to compare

3.0.9

Added

  • fixing segfault when the VM receives an empty code page (generated from an empty block)
  • (print (fun () ())) will now print Function @ 1 instead of just its page addr, 1
  • (if true () ()) now returns nil (can be generalized to () -> nil)
  • anonymous functions are now available ; eg: ((fun () (print "a")))
  • added forEach in library
  • added -c|--compile option to the CLI so that we can only compile an ArkScript file instead of compiling and running it, by @DontBelieveMe
  • added min and max in lib/Math/Arithmetic.ark, by @FrenchMasterSword
  • added reduce in lib/Functional/Reduce.ark, by @FrenchMasterSword
  • added product in lib/List/Product.ark, by @FrenchMasterSword

Changed

  • a quoted code (defered evaluation) isn't capturing anymore surrounding variables' values, thus increasing greatly performances
  • lists are printed like ["string" 1 true] now, instead of ( string 1 true )
  • updated zip so that it can work with lists of different sizes, by @FrenchMasterSword
  • better cyclic includes detection
  • better VM error message when redefining a variable through let

ArkScript v3.0.8

22 Oct 13:37

Choose a tag to compare

3.0.8

Added

  • it's now possible to compare Values using operator<
  • reverseList (added to the FFI) by @rinz13r
  • a warning will now pop up during compilation if code appears to be ill-formed (eg number/string/list right after a ()
  • option -f(allow-invalid-token-after-paren|no-invalid-token-after-paren) was added (default: OFF)

Changed

  • the internal API used to compare values has been updated to be much shorter
  • the REPL can take into account the lib directory, by @rstefanic
  • isNaN and isInf should work on any type but return false if they aren't numbers
  • replacing Ark with ArkScript in source code and files (Ark being the shortname for ArkScript, as JS is the shortname for Javascript)
  • findInList now returns nil when the object can not be found, otherwise it returns its index in the list

ArkScript v3.0.7

15 Oct 11:45

Choose a tag to compare

3.0.7

Added

  • cos, arccos, sin, arcsin, tan, arctan
  • E (exp 1), Pi, Tau (2 * Pi), NaN, Inf
  • isNaN, isInf
  • exp, ln (standard logarithm), pow, sqrt
  • ceil, round, floor
  • zip, map, sum
  • REPL, made by @rstefanic

Changed

  • moved the lib files in subfolders to be more organized
  • re-updating the import rules on the parser side to be able to import files in subfolders from the standard library
  • updating naming convention of the modules

ArkScript v3.0.6-b

09 Oct 14:47

Choose a tag to compare

3.0.6-b

Added

  • adding lib/Functional.ark to store (compose f g)

Changed

  • the VM now deletes all scopes except the global one in case of failure, when the persisting flag is set
  • fixing plugin importation

ArkScript v3.0.6

07 Oct 08:57

Choose a tag to compare

3.0.6

Added

  • function arity handling in the VM, can be disabled with the option -fno-function-arity-check
  • sliceStr in lib/Slice.ark, taking a string, a starting index (can't be less than 0), and the length (can't be less than 1), returning a portion of the given string
  • reverseStr in lib/Reverse.ark taking a string and returning it in reverse

Changed

  • updated the include module, which was randomly adding / before the path of the files
  • dispatched the unit tests in multiple files
  • now using a separated class to hold the description values for the VM
  • updated assertions in split in lib/Split.ark (works only with single character separators)
  • fixing import bug

ArkScript v3.0.5

04 Oct 18:45

Choose a tag to compare

3.0.5

Added

  • the parser can now recognize expressions like ((f f) x)
  • we can now create Ark::Value with floats

Changed

  • the init() internal method of the VM shouldn't stop when a binded function isn't used in the code, just ignore it
  • the compiler shouldn't crash on a bad code block
  • better line counter in lexer
  • the VM shouldn't try to run a non-existing bytecode file if the compilation fails (when calling doFile())
  • VM.call should return nil if the stack is empty, otherwise it results in a vector subscript out of range and that's bad
  • the SFML plugin was updated to run on Windows

Shipping with the compiled modules this time

ArkScript v3.0.4

01 Sep 09:45

Choose a tag to compare

Change log

3.0.4

Added

  • with the option -L|--lib we can set the path to the ArkScript standard library
  • we can now load C++ lambdas into the ArkVM, as well as C++ functions
  • adding function sleep, taking a duration in milliseconds
  • adding function system, taking a command from a string ; can be deleted if ARK_ENABLE_SYSTEM is set to 0 in the CMakeLists

Changed

  • updating CMakeLists.txt to avoid building unuseful stuff from google benchmark
  • toNumber doesn't raise an unrecoverable error but returns nil if the conversion failed
  • print no longer add a space between each element
  • updating the way the builtins are handled (in VM/FFI) to make it easier to add functions

Removed

  • doc folder, now everything is on the wiki