Releases: sl-lang/sll
Releases · sl-lang/sll
sll-v0.7.22
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 insll_gc_add_root
Changed
- Audit event
clib.library.load
now contains amodule_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 ornil
- Merged
sll_builtin_internal_function_data
andsll_builtin_internal_function_count
intosll_builtin_internal_functions
- Moved the
mime.sll
file to thehttp
extension module - Non-containter object access now returns
nil
sll-v0.7.21
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
andsll_object_to_array
to use the provided type table - Fixed issue with backslash escaping in
sll_api_process_start
- Funcion
sll_get_location
now acceptsNULL
arguments - Renamed
call_stack_type$return
tocall_stack_type$location
Removed
- Call stack frames no longer contain the name of the function
- Verbose output from module compilation
sll-v0.7.20
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
andsll_gc_remove_roots
(#287) - Implemented
SLL_ERROR_STRING
,sll_error_from_string_pointer
,sll_error_get_string_pointer
anderror$ERROR_STRING
- Tests (#285)
Changed
- Current dynamic library handle can be obtained by calling
sll_platform_load_library
with aNULL
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
toaudit$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
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
andsll_optimize_source_file
- More tests (#8)
Changed
- Build script is now compiled to assembly only once
- Fixed
sll_string_prepend_char
andsll_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
andsll_array_join
- Unused functions:
sll_create_string
andsll_create_object_string
sll-v0.7.18
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 fieldtype
containing the type returned by functions from the given descriptor - Implemented
path$join
- Implemented
SLL_ABI_PATH_RESOLVER_DEINIT
,SLL_ABI_PATH_RESOLVER_INIT
andSLL_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
andsll_cli_unregister_path_resolver
- Implemented
sll_compilation_data_from_source_file
- Implemented
sll_file_read_all
andfile$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
andsll_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 frommath.sll
sll-v0.7.17
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 thesys_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
andPTR
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
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
andSLL_CLEANUP_TYPE_VM
- Implemented
sll_complex_exp
andsll_complex_log
- Implemented
sll_execution_flags_t
,sll_process_creation_flags_t
andsll_search_flags_t
- Implemented
sll_file_handle_t
- Implemented
sll_math_abs
andsll_math_copy_sign
- Implemented
sll_number_type_t
andSLL_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
anddate.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
andsll_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
tosll_environment_path
- Renamed
sll_flags_t
tosll_logger_flags_t
- Renamed
sll_int_float_t
andsll_int_float_data_t
tosll_number_t
andsll_number_data_t
- Renamed
SLL_UNMAPPED_WINDOWS_ERROR
toSLL_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 eventsll.float.error.set
- Unneeded macro:
SLL_UNKNOWN_LIBRARY_HANDLE
- Unused limit macros:
SLL_MAX_EXPORT_TABLE_LENGTH
andSLL_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
andsll_quaternary_operator_t
sll-v0.7.15
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
andSLL_VAR_ARG_INIT_SLL
- Implemented
statistics$stddev
andstatistics$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
to16384
- Moved website files from
src/web/client
tosrc/web
- Registers are now stored in the register area in debug mode
- Renamed audit event
sll.process.shell
tosll.process.start.shell
(#271) - Renamed website page names
- Reworked the
struct.sll
module
Removed
- Website server code
sll-v0.7.14
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
andSLL_ERROR_BASE64_CHARACTER
- Implemented
sll_internal_function_descriptor_t
,sll_builtin_internal_function_data
,sll_builtin_internal_function_count
andsll_register_internal_functions
- Implemented
sll_version_sha
andsll_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
toD
- Array functions (
array$extend
,array$push
,array$remove
andarray$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
andsll_set_log_function
have been merged intosll_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
andpath$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
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
andsll_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
andsll_complex_sub
(#262) - Implemented
sll_complex_t
(#262) - Implemented
sll_compressed_integer_t
,sll_compress_integer
,sll_decompress_integer
andSLL_ASSEMBLY_INSTRUCTION_TYPE_PUSH_INT_COMPRESSED
- Implemented
SLL_DECODE_SIGNED_INTEGER
andSLL_ENCODE_SIGNED_INTEGER
- Implemented
SLL_ERROR_FLAG_SLL
,SLL_UNMAPPED_WINDOWS_ERROR
,SLL_ERROR_EOF
,SLL_ERROR_GET_EXTRA
andsll_platform_get_error
- Implemented
SLL_NODE_TYPE_COMPLEX
andSLL_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
andcomplex_type
(#262) - Implemented
sll_parse_arg_count
- Implemented
sll_return_type_t
andSLL_RETURN_TYPE_xxx
constants - Implemented
sll_var_arg_get_complex
- Implemented
statistics$quantiles
(#260) - Improved the performance of
sll_object_get_field
andsll_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 asconst
- Reduced the number of calls to
sll_platform_lock_acquire
andsll_platform_lock_release
- Reduced the number of thread-local variables
- Renamed
SLL_ERROR_FLAG_LIBC
anderror_codes$LIBC_ERROR_CODES
toSLL_ERROR_FLAG_SYSTEM
anderror_codes$SYSTEM_ERROR_CODES
- Renamed
sll_string_length_unaligned
tosll_string_length
- Renamed
XXX_fail
function toXXX_raw
- Renamed argument parsing modifier symbolizing variadic functions from
+
to!
- Rewritten the CLI executable loader code
- Split
sll_string_pointer_to_object
tosll_string_pointer_to_object
andsll_string_pointer_length_to_object
- Split the operators from
src/sll/operator.c
tosrc/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