Aleph scripts now have less name-lookup and allocation overhead. Compared with the baseline recorded before this performance work began, the runtime is 3.4% faster across the original 11-benchmark suite, with targeted name-heavy workloads improving by up to 62.2%. Further runtime optimizations are planned as part of this ongoing work.
Numerical Pauli strings now support systems of Nโค256 qubits through the renamed PauliString and PauliStringSum.
Aleph functions, overloads, methods, and constructors can now declare AlephDoc metadata in JSDoc-style /** ... */ comments for editor hovers and generated API documentation.
Numerical Pauli strings are now more powerful:
Renamed PauliTerm โ PauliString and PauliSum โ PauliStringSum to be more expressive.
They support Nโค256 qubits.
Added a new constructor PauliString(string, sites, num_qubits) for easier control over Pauli string creation.
Printing now displays the string only for the number of qubits in the Hilbert space.
Verbose printing is now available via display() for both PauliString and PauliStringSum.
Reduced temporary allocations in function calls, arithmetic, container operations, and other interpreter hot paths. Targeted benchmarks perform approximately 50โ78% fewer allocations.
Optimized variable, function, global, and type-name lookup. Scripts with wide local scopes run 28.3% faster, with 27.6% fewer allocations and 32.6% fewer allocated bytes; lookup in large engine name tables is 62.2% faster.
Aleph LSP callable analysis now:
Reads typed native and script signatures without executing user code.
Infers straightforward function, method, constructor, and overloaded call results for hover.
Reports NoMatchingOverload warnings only when every arity-compatible overload is statically impossible.
Preserves dynamic any and indeterminate suppression, registered conversions, included callable metadata, and runtime guard behavior.
Aleph LSP type analysis now:
Shows inferred result types in hover for native and Aleph functions, methods, constructors, operators, assignments, indexing, and member access.
Warns when known argument types cannot match an overload or when a value cannot be assigned to a variable's established type.
Remains permissive for intentionally dynamic or incomplete code.
Document formatting now normalizes Aleph source documentation blocks, while malformed tags produce non-blocking editor warnings.
Added hover and API documentation for Aleph-defined standard-library functions.
Aleph now resolves names once and uses compact, per-engine identifiers during execution. Human-readable names and portable runtime snapshots are retained for diagnostics, tooling, and interoperability.
Replaced the Aleph types PauliTerm and PauliSum with PauliString and PauliStringSum. Constructors and convert_to_pauli_sum(...) now require the number of qubits, while xbits() and zbits() now return lists of 64-bit chunks.
Rename PauliTerm to PauliString and PauliSum to PauliStringSum, then pass the system size explicitly. For example, use PauliString("XZ", [0, 70], 128) and PauliStringSum(128). Update single-chunk bit access such as p.xbits() to p.xbits()[0].