Skip to main content

Release notes for SA Engine

SA Engine 5.4.0

New Features and Improvements

  • Slog Compiler Refinements: Major improvements in register allocation and memory management, alongside fixes in unwind table handling for Windows, enhancing compiler efficiency and robustness.
  • Enhanced Array and Matrix Functionalities: New functions for window aggregation in arrays, along with the introduction of generic matrix multiplication.
  • New array counting window function: Introduced awinagg which builds windows over stream of arrays.
  • New array constructor: array(format, shape, initial-value) create array of format with shape and set every element to initial-value.
  • System Enhancements: Reduced memory object size overhead.

Bug Fixes

  • WASM HTTP Download Issue: Resolved a critical bug where files weren't saved correctly in memory when downloaded via WASM HTTP, particularly for non-octet stream types.
  • Permissions in Release Files: Addressed the issue with incorrect permissions on .dmp files in the release tarball, enhancing system security and integrity.

SA Engine 5.3.0

New Features and Improvements

  • PNG Handling: Added support for reading and writing PNG files across most platforms, enhancing media processing capabilities.
  • FFT Performance: Achieved a significant 6x improvement in FFT (Fast Fourier Transform) performance, ensuring faster signal processing and data analysis.
  • JIT Compiler: Made several internal enhancements to the JIT (Just-In-Time) compiler, optimizing runtime performance.

Bug Fixes

  • Python API Stability: Addressed a critical issue in the Python API where calling an undefined function could lead to a system crash.
  • UTF-8 Reading: Fixed a bug where EOF (End of File) was not detected accurately when reading specific UTF-8 characters. This ensures accurate and efficient text processing.

SA Engine 5.2.0

New Features

  • Code and Network Downloads: Microedge-listeners now support downloading of missing code and SANN-networks.
  • Array Flattening: A handy new flatten function has been introduced which can transform nested vectors into rank 1 arrays.
  • Computer Vision Capabilities: Meet the new system model 'CV' - equipped with utility functions tailored specifically for computer vision applications.
  • Array Support: Arrays have been enhanced with support for special values - Infinity (Inf) and Not-a-Number (NaN).
  • Array Slicing: Slicing ranges in arrays is now possible using the a[arange(high,low),*] notation. A more intuitive syntax for this feature will be introduced in the future.
  • MQTT-extension for RPI64: RPI64 now comes bundled with an MQTT-extension, providing more seamless integration with IoT protocols.
  • JSON Type in OSQL: We’ve introduced the OSQL type Json as a union of Vector and Record types, facilitating easier handling of JSON data.
  • Array Function Type Inference: Type inference for generic array functions has been added, allowing you to define one function for all types of arrays.


  • Python API: The Python API is now thread safe.
  • Error Messaging: Error messages, especially when running documentation, now properly display line breaks for better clarity.
  • Array Comprehension: Compilation of almost all array comprehension queries is now fully supported.
  • Verification: A verification step has been added to Store and Forward uploads to ensure the accuracy of data transfers.
  • Platform Support: SA Studio is now supported on RPI64.
  • SLAP Block Size: The system can now handle much larger SLAP blocks, enabling the compilation of more extensive queries directly into machine code.
  • Query Processing: Added the notion of query blocks for separation between rewrites and cost-based query optimization.
  • Query Rewriting: We’ve relaxed the tr rewrite guards and also introduced rewrites over stateful predicates (#2881).
  • Query Compilation: Simple disjunctive conditions are now fully compiled, providing faster query execution.
  • Tuples in streams between threads: Addressed an issue related to handling tuples over streams between coroutines.

Bug Fixes

  • Transcriber Issues: Several AARCH64-related bugs in the transcriber have been addressed.
  • Topic Merging: Fixed the subscribe:merge functionality to ensure it works perfectly when merging topics from both local and remote sources.
  • Array Type System: Made necessary improvements to the type system concerning arrays, enhancing both performance and accuracy.

Removed features

  • Removed support for numarrays which have been replaced by arrays.

SA Engine 5.1.0

New Features

  • Implemented mean(Array) and div(Array, Real) functions
  • Many new functions for array of real (f64) added
  • Introduced basic element-wise arithmetic operators over arrays
  • Webhooks feature introduced


  • Switched to arange() from vrange() for enhanced performance
  • Added performance tests to array regressions
  • Optimized construction of vectors and arrays
  • Improved optimizer to move constant expressions out of loops
  • Enabled compiling assignment of Charstring
  • Enabled full compilation of simple disjunctive conditions
  • Enabled compiling MAX/MIN/ABS and NDARRAY literals
  • Improved type inference for generic array functions
  • Casting to Real in generic array functions to avoid type Number
  • Added better reconnection logic for JDBC driver

Bug Fixes

  • Fixed ND-Arrays not being deallocated correctly
  • Fixed constant OR expressions not being compiled
  • Fixed error thrown when setting ndarrays from python to session variables
  • Fixed deadlocks and/or crashes when using threads when calling python.

Removed Features

  • Removed new_array(bag b) function

SA Engine 5.0.2

  • Performance Improvements: Enhanced efficiency in array comprehensions.
  • New Platform Support: Added support for RPI 64-bit (ARMv8 AARCH64) with Python call-in and call-out.
  • Cross-platform Compatibility: Enabled WASM edge on iOS and OSX.
  • Array Comprehensions: More components are now compiled, improving performance.
  • Database Support: Federation Services now compatible with both MSSQL and MYSQL.

SA Engine 5.0.1

  • Enhanced array management.
  • Optimized resource use in merging stream vectors.
  • sa.engine version now in user-agent HTTP header.
  • Added sa.engine peername to sa-peer HTTP header.
  • Fixed an issue where our CI/CD pipeline deployed the wrong version of the windows release

SA Engine 5.0.0

Key Additions:

  • Arrays: We're introducing a new data type for managing densely packed numeric arrays.
  • Array Comprehension: An experimental feature to allow advanced array operations, translating high-level commands into machine code for maximum performance. Note that it's still under development, with continuous improvements planned for future releases.
  • The integration of Arrays and Array Comprehension allows our query optimizer and JIT compiler to produce highly efficient machine code. In the near future, it will also support SIMD instructions.
  • This will enable users to create complex models, such as deep learning, in the high-level OSQL language without compromising on performance or simplicity.
  • Scalable Federations: We've revamped the connection logic in the SA Engine to support scalability using Kubernetes, harnessing the power of web scale technology.

Noteworthy Improvements:

  • Enhanced Unicode support.
  • Refined CAN bus wrapper featuring improved stopping logic.
  • SA Engine can now run in WebAssembly.
  • Model management API has undergone a name change and refactor.
  • A greater number of vector operations are now compiled.

GUI Changes:

  • We've given SA Studio a complete makeover. The Bitmap visualization feature has been added for efficient array visualization. Also, SA Studio is now independent from SA Engine, with separate life cycles. Consequently, this will be the last release note combining updates for both SA Engine and SA Studio.