Skip to content

Releases: sl-lang/sll

sll-v0.7.22

18 Jun 20:16
b4713cf
Compare
Choose a tag to compare
sll-v0.7.22 Pre-release
Pre-release

Sll 0.7.22 - 2022-06-18

Added

  • [Linux only] Build script option to build using Clang: --clang
  • [Linux only] Build script option to enable fuzzing: --fuzzer (Requires --clang)
  • [Linux only] Build script option to replay a fuzzer result: --fuzzer-debug
  • Implemented http/mime$DEFAULT_EXTENSION
  • Implemented SLL_FILE_FLAG_SOCKET
  • Implemented sll_internal_function_table_descriptor_t
  • Implemented sll_platform_get_library_file_path
  • Implemented SLL_RANDOM_BITS
  • Internal function descriptors located in SLL_ABI_INTERNAL_FUNCTION_TABLE_DESCRIPTOR are now automatically loaded upon initialization
  • More tests (#285)
  • New audit event: clib.library.load.error
  • Object refernece counter now has to be masked with SLL_OBJECT_REFERENCE_COUNTER_MASK upon access
  • Objects can now be part of multiple GC roots
  • Temporary GC roots can now be added by flagging the fast argument in sll_gc_add_root

Changed

  • Audit event clib.library.load now contains a module_path argument
  • CLib library names are now absolute file paths
  • Fixed array and string underflow indexing
  • Fixed calling variable argument function via array in the VM
  • Fixed checksum calculation in sll_string_duplicate
  • Fixed global state initialization
  • Fixed incorrect return value from function sll_string_compare_pointer
  • Fixed internal thread creation in sll_platform_start_thread
  • Fixed invalid identifier parsing
  • Fixed multiple edge case parsing scenarios
  • Fixed null pointer dereference during parsing
  • Fixed shallow object copy in sll_object_clone
  • Fixed VM initialization bug
  • Function clib/library$unload now return an error or nil
  • Merged sll_builtin_internal_function_data and sll_builtin_internal_function_count into sll_builtin_internal_functions
  • Moved the mime.sll file to the http extension module
  • Non-containter object access now returns nil

sll-v0.7.21

11 Jun 10:58
0b91674
Compare
Choose a tag to compare
sll-v0.7.21 Pre-release
Pre-release

Sll 0.7.21 - 2022-06-11

Added

  • CLI option to treat warnings as errors: -E or --enable-errors

Changed

  • Build script compilation now uses optimization
  • Fixed sll_object_get_field, sll_object_set_field and sll_object_to_array to use the provided type table
  • Fixed issue with backslash escaping in sll_api_process_start
  • Funcion sll_get_location now accepts NULL arguments
  • Renamed call_stack_type$return to call_stack_type$location

Removed

  • Call stack frames no longer contain the name of the function
  • Verbose output from module compilation

sll-v0.7.20

04 Jun 12:08
cf00ee8
Compare
Choose a tag to compare
sll-v0.7.20 Pre-release
Pre-release

Sll 0.7.20 - 2022-06-04

Added

  • Ability to use assembly in extension modules
  • C interface library: clib (#286)
  • Implemented audit$register_event
  • Implemented sll_gc_add_root, sll_gc_add_roots, sll_gc_collect, sll_gc_remove_root and sll_gc_remove_roots (#287)
  • Implemented SLL_ERROR_STRING, sll_error_from_string_pointer, sll_error_get_string_pointer and error$ERROR_STRING
  • Tests (#285)

Changed

  • Current dynamic library handle can be obtained by calling sll_platform_load_library with a NULL file path argument
  • Fixed CLI output when supplied a directory
  • Fixed issues with constant rebuilding of assembly files
  • Fixed memory leaks caused by circular references (#287)
  • Fixed stringification of circular references
  • Renamed audit$BUILTIN_EVENTS to audit$EVENT_ARGUMENTS
  • Thread, lock, barrier and semaphore creation functions now return error objects

Removed

  • Deprecated apt-key is no longer used for repository keys

sll-v0.7.19

28 May 06:49
0e4fe7e
Compare
Choose a tag to compare
sll-v0.7.19 Pre-release
Pre-release

Sll 0.7.19 - 2022-05-28

Added

  • CLI option to enable optimizations: -O or --optimize
  • CLI option to specify the number of optimization rounds: -x or --optimization-rounds
  • Compilation data optimizer
  • Implemented sll_optimization_round_count_t and sll_optimize_source_file
  • More tests (#8)

Changed

  • Build script is now compiled to assembly only once
  • Fixed sll_string_prepend_char and sll_string_remove
  • Fixed file change tracking in the build script
  • Fixed file path string index generated by sll_unify_compilation_data
  • Renamed arguments of multiple functions
  • Renamed CLI bundle output switch from -O to -B
  • Renamed fields of multiple types
  • Strings passed to sll_add_string are now always release
  • Translated the build script to Sll (#75)

Removed

  • Duplicated functions: sll_array_from_length and sll_array_join
  • Unused functions: sll_create_string and sll_create_object_string

sll-v0.7.18

21 May 06:47
Compare
Choose a tag to compare
sll-v0.7.18 Pre-release
Pre-release

Sll 0.7.18 - 2022-05-21

Added

  • CLI flag to load path resolver library: -F or --file-path-resolver
  • CLI include directories can now be aliases pointing to directories (separated by |)
  • Fast object pool used in the GC
  • Hash descriptor type hash$hash_type now contains a field type containing the type returned by functions from the given descriptor
  • Implemented path$join
  • Implemented SLL_ABI_PATH_RESOLVER_DEINIT, SLL_ABI_PATH_RESOLVER_INIT and SLL_ABI_PATH_RESOLVER_RESOLVE
  • Implemented sll_cli_lookup_result_t, sll_cli_lookup_data_t, sll_cli_path_resolver_t, sll_cli_expand_path, sll_cli_lookup_file, sll_cli_register_path_resolver and sll_cli_unregister_path_resolver
  • Implemented sll_compilation_data_from_source_file
  • Implemented sll_file_read_all and file$read with no arguments
  • Implemented sll_object_to_map
  • Implemented sys$EXECUTABLE_EXTENSION
  • Implemented thread$exit
  • Operator for ending execution of the current thread and returning a value: !@@

Changed

  • Fixed sll_map_remove
  • Fixed sll_string_compare, sll_string_includes, sll_string_replace, sll_string_select and sll_string_split
  • Fixed assembly stack frames
  • Fixed incorrect assembly jump generation
  • [Linux only] Fixed permission bits for directory creation in sll_platform_create_directory
  • Fixed weak references created via the API
  • Improved the performance of the GC
  • Translated part of the build script to Sll (#75)

Removed

  • Function gauss2 is no longer directly exported from math.sll

sll-v0.7.17

14 May 08:46
1e229cb
Compare
Choose a tag to compare
sll-v0.7.17 Pre-release
Pre-release

Sll 0.7.17 - 2022-05-14

Added

  • Implemented sys$ROOT_PATH
  • Implemented the stack memory allocator (#281)

Changed

  • Audit event sll.sys.library.load now also contains the path to the library
  • Buffer passed to sll_file_from_data is no longer internaly allocated
  • EOF error (error$ERROR_EOF) now contains the file that raised the error (#277)
  • [Windows only] Fixed sll_platform_set_cpu
  • Libraries loaded via load_library are now longer constrained to the sys_lib/ directory
  • Library extensions returned by sys$LIBRARY_EXTENSION now contain the separating dot
  • Newline file flushes are now enabled in append mode (#276)
  • Replaced arbitrary memory pointer dereferences with shell types (#283)
  • Replaced char pointer casting with ADDR and PTR macros (#282)
  • XMM registers are now cleared before internal function call (#278)

Removed

  • Extension directory (sys_lib/), sys$LIBRARY_PATH and -i extension-library-path
  • Unused constant macro: SLL_MAX_PAGE_SIZE

sll-v0.7.16

07 May 09:33
Compare
Choose a tag to compare
sll-v0.7.16 Pre-release
Pre-release

Sll 0.7.16 - 2022-05-07

Added

  • Argument parsing code to parse a float or a complex number: X
  • Argument parsing code to parse an integer, a float or a complex number: z
  • Argument parsing modifier to allow nil arguments: @
  • CLI flag to diable all audit events: -X or --disable-audit
  • Implemented base64$ALPHABET_URL_SAFE
  • Implemented file$FLAG_FLUSH_ON_NEWLINE
  • Implemented sll_audit_enable
  • Implemented SLL_CLEANUP_TYPE_GLOBAL and SLL_CLEANUP_TYPE_VM
  • Implemented sll_complex_exp and sll_complex_log
  • Implemented sll_execution_flags_t, sll_process_creation_flags_t and sll_search_flags_t
  • Implemented sll_file_handle_t
  • Implemented sll_math_abs and sll_math_copy_sign
  • Implemented sll_number_type_t and SLL_PARSE_ARGS_TYPE_COMPLEX
  • Implemented sll_platform_allocate_page_aligned
  • Nightly builds (available via the /apt/nightly/ channel)
  • Tests for audit.sll, base64.sll, data_file.sll and date.sll (#8)

Changed

  • Fixed data_file.sll
  • Fixed path$set_cwd
  • Fixed sll_get_name
  • Fixed sll_string_count_right
  • Fixed audit event sll.error.backtrace
  • Fixed premature file descriptor deallocation
  • Fixed the audit API
  • Global output files (sll_stdout and sll_stderr) are no longer unbuffered in debug builds
  • Improved compilation speed
  • More system functions return error codes
  • Moved code between header files
  • Renamed sll_env_path to sll_environment_path
  • Renamed sll_flags_t to sll_logger_flags_t
  • Renamed sll_int_float_t and sll_int_float_data_t to sll_number_t and sll_number_data_t
  • Renamed SLL_UNMAPPED_WINDOWS_ERROR to SLL_UNMAPPED_SYSTEM_ERROR

Removed

  • Duplicated function: sll_math_euler_phi
  • Float compare error API: sll_float_compare_error, sll_api_float_get_compare_error, sll_api_float_set_compare_error, float$get_compare_error, float$set_compare_error and audit event sll.float.error.set
  • Unneeded macro: SLL_UNKNOWN_LIBRARY_HANDLE
  • Unused limit macros: SLL_MAX_EXPORT_TABLE_LENGTH and SLL_MAX_STACK_OFFSET
  • Unused types: sll_assembly_file_table_length_t, sll_checksum_t, sll_name_length_t, sll_object_type_field_t, sll_unary_operator_t, sll_ternary_operator_t and sll_quaternary_operator_t

sll-v0.7.15

30 Apr 07:38
Compare
Choose a tag to compare
sll-v0.7.15 Pre-release
Pre-release

Sll 0.7.15 - 2022-04-30

Added

  • Checks for unknown file descriptors in the serial API
  • CPU flags are now checked during the initialization process
  • Implemented sll_contains_character
  • Implemented SLL_FILE_FLUSH_ON_NEWLINE
  • Implemented SLL_RELEASE
  • Implemented SLL_VAR_ARG_INIT_C and SLL_VAR_ARG_INIT_SLL
  • Implemented statistics$stddev and statistics$variance (#260)
  • Raw string quote escape sequence (#274)
  • Sandbox flag to disable object reference counter queries: no-ref

Changed

  • Assembly jump instructions now store a pointer to the target instruction (#270)
  • Changed the website layout
  • Complex number arguments and return values are now passed by pointers
  • File flags are now 16-bit
  • Fixed CLI output path calculation
  • Fixed error codes returned by sll_api_base64_decode
  • Fixed execution of an arbitrary memory location (#272)
  • Fixed file lock ownership
  • Fixed issues related to incorrect cleanup order
  • Fixed issues related to the atexit API
  • Fixed null pointer dereferences
  • Fixed string checksums returned by sll_string_from_pointer_length
  • Increased per-core thread count limit from 8192 to 16384
  • Moved website files from src/web/client to src/web
  • Registers are now stored in the register area in debug mode
  • Renamed audit event sll.process.shell to sll.process.start.shell (#271)
  • Renamed website page names
  • Reworked the struct.sll module

Removed

  • Website server code

sll-v0.7.14

20 Apr 19:48
Compare
Choose a tag to compare
sll-v0.7.14 Pre-release
Pre-release

Sll 0.7.14 - 2022-04-20

Added

  • Argument parsing code to parse a 16-bit unsigned integer: W
  • Argument parsing code to parse a 64-bit unsigned integer: Q
  • Argument parsing code to parse an 8-bit unsigned integer: B
  • Argument parsing modifier to output the raw object: &
  • CLI option for enabling release mode: -r or --release-mode
  • Common assembly code is now located in src/sll/include/sll/_internal/common.inc
  • Debug version of libraries and bundles are now located in lib_debug/ folder
  • Functions can now be annotated with documentation by a top-level string
  • Implemented SLL_CLI_FLAG_RELEASE_MODE
  • Implemented sll_destroy_object
  • Implemented SLL_ERROR_FROM_EXTRA, SLL_ERROR_BASE64_PADDING and SLL_ERROR_BASE64_CHARACTER
  • Implemented sll_internal_function_descriptor_t, sll_builtin_internal_function_data, sll_builtin_internal_function_count and sll_register_internal_functions
  • Implemented sll_version_sha and sll_version_tag
  • NASM is now used in the compilation process

Changed

  • API functions are now called directly, without the wrapper functions (named XXX_raw)
  • Argument parsing code to parse a 32-bit unsigned integer has been renamed from I to D
  • Array functions (array$extend, array$push, array$remove and array$unshift) now returns the new length of the array after the operation
  • Audit event sll.error.backtrace no longer contains the amount of stack frames skipped
  • Changing the floating-point compare error via float$set_compare_error will now return the old one
  • Fixed crashes related to signals recived at unexpected times
  • Functions sll_set_log_default, sll_set_log_file and sll_set_log_function have been merged into sll_set_log_flags
  • logging functions now return a boolean success flag
  • Map function (map$remove) now returns the new length of the map after the operation
  • Merged path$list_dir and path$recursive_list_dir by adding an extra argument
  • Negative time zone offsets are now correctly printed in date$date_type
  • Serializaion functions now return error codes on error

Removed

  • API-related header files
  • Unneeded SLL_RETURN_TYPE_xxx constants
  • Unneeded function: sll_register_builtin_internal_functions
  • Unneeded type: sll_return_type_t
  • Unused module args.sll

sll-v0.7.13

16 Apr 11:41
Compare
Choose a tag to compare
sll-v0.7.13 Pre-release
Pre-release

Sll 0.7.13 - 2022-04-16

Added

  • Argument parsing code to parse a complex number: d
  • Argument parsing modifier to parse an array of a given type: +
  • CLI option to query the installation path of specified objects: -i or --install-path
  • Imaginary numbers can be created by adding the i suffix to a number (#262)
  • Implemented sll_arg_state_t, sll_free_args and sll_parse_args_list
  • Implemented sll_complex_abs, sll_complex_add, sll_complex_conjugate, sll_complex_div, sll_complex_div_float, sll_complex_mult, sll_complex_mult_float, sll_complex_neg, sll_complex_pow, sll_complex_pow_float, sll_complex_pow_int, sll_complex_reciprocal and sll_complex_sub (#262)
  • Implemented sll_complex_t (#262)
  • Implemented sll_compressed_integer_t, sll_compress_integer, sll_decompress_integer and SLL_ASSEMBLY_INSTRUCTION_TYPE_PUSH_INT_COMPRESSED
  • Implemented SLL_DECODE_SIGNED_INTEGER and SLL_ENCODE_SIGNED_INTEGER
  • Implemented SLL_ERROR_FLAG_SLL, SLL_UNMAPPED_WINDOWS_ERROR, SLL_ERROR_EOF, SLL_ERROR_GET_EXTRA and sll_platform_get_error
  • Implemented SLL_NODE_TYPE_COMPLEX and SLL_ASSEMBLY_INSTRUCTION_TYPE_PUSH_COMPLEX (#262)
  • Implemented SLL_OBJECT_TYPE_COMPLEX, SLL_INIT_COMPLEX, SLL_INIT_COMPLEX_STRUCT, sll_static_complex_zero, sll_complex_to_object and complex_type (#262)
  • Implemented sll_parse_arg_count
  • Implemented sll_return_type_t and SLL_RETURN_TYPE_xxx constants
  • Implemented sll_var_arg_get_complex
  • Implemented statistics$quantiles (#260)
  • Improved the performance of sll_object_get_field and sll_object_set_field (#268)
  • Improved the string matching performance (#59 and #268)
  • Integer and floats can now be prefixed with the + sign for consistency
  • Memory allocations are now served from a pool from small allocations (#267)
  • Object creation code to generate complex numbers: d
  • Object creation modifier to dereference array elements: *

Changed

  • All Sll API functions now use the Microsoft x64 calling convention
  • AVX, MMX and SSE instructions are now used in multiple functions
  • Fixed file lock acquisition
  • Fixed lack of memory initialization in array creation
  • Fixed multiple memory leaks
  • More platform-dependent function return error codes
  • Pointers returned by sll_var_arg_get are no longer marked as const
  • Reduced the number of calls to sll_platform_lock_acquire and sll_platform_lock_release
  • Reduced the number of thread-local variables
  • Renamed SLL_ERROR_FLAG_LIBC and error_codes$LIBC_ERROR_CODES to SLL_ERROR_FLAG_SYSTEM and error_codes$SYSTEM_ERROR_CODES
  • Renamed sll_string_length_unaligned to sll_string_length
  • Renamed XXX_fail function to XXX_raw
  • Renamed argument parsing modifier symbolizing variadic functions from + to !
  • Rewritten the CLI executable loader code
  • Split sll_string_pointer_to_object to sll_string_pointer_to_object and sll_string_pointer_length_to_object
  • Split the operators from src/sll/operator.c to src/sll/operator
  • [Windows Only] Windows error codes are now remapped to POSIX errno values

Removed

  • Thread number limit macro: SLL_SCHEDULER_MAX_THREADS
  • Unused define: SLL_ERROR_FLAG_WINAPI
  • Unused function: sll_string_length
  • Unused map: error$WINDOWS_ERROR_CODES
  • Unused type: sll_decl_copy_node_data_t