Releases: barebaric/raydriver
Releases · barebaric/raydriver
Release list
v0.2.0
Added
- packaging: publish aarch64 (ARM64) Linux wheels to PyPI, built natively on
ubuntu-24.04-armrunners. The CI test suite now also runs on ARM64 so the architecture is exercised before every release. macOS ARM64 wheels were already published; this closes the Linux ARM64 gap.
v0.1.4
Fixed
- Interpreter shutdown crash: the shared tokio runtime and its
GIL-watchdog task outlived Python finalization. The watchdog attaches
to the interpreter every 10 seconds, so a worker thread could still be
holding a Python thread state when CPython ran
PyInterpreterState_Delete, aborting the process with
"remaining threads" (observed on the Windows CI runner after the
rayforge test suite passed). The runtime is now torn down from an
atexithook, which CPython runs before interpreter finalization:
tasks are cancelled and the worker threads joined while it is still
safe to do so, and the watchdog checks the shutdown flag before
attaching.
v0.1.3
Fixed
- Job error attribution race: after a GRBL error halted a job, the
emergency cancel's safety shutdown could race into the alarm state and
overwrite the recorded error with a secondaryerror:9("Commands
Locked"). The first error recorded now wins, so consumers reliably see
the root-cause failure instead of a teardown side effect. - Secondary errors during teardown no longer break recovery: they still
resolve pending interactive command futures and still trigger the job
halt — only the redundant state mutation is skipped. test_error_halts_streamwas flaky on slow runners: an emergency soft
reset racing in-flight motion legitimately leaves the machine
alarm-locked (real Grbl behaves the same). The test now recovers with
$Xand waits for the status poller to report Idle before starting
the next job.
Added
init_logging(filter, path)binding: Rust-side session diagnostics
(stall detection, liveness, unexpected device lines) now reach stderr
or a dedicated log file instead of being silently dropped when no
logger is installed. Theraydriver runCLI gains--log-file.- Terminal job errors are published through the device state
(state.error):run()resolves normally even on failure, so the
state is the only way consumers can detect a failed job. Protocol
errors keep their proper GRBL error codes; a stale error is cleared
on the next job start. - Newline-terminated, rate-limited progress output when stdout is not a
TTY, so redirected log output never interleaves with the progress
line.
Tooling
- Type checking is now enforced: pyright runs over
python/and
tests/in CI, and a.pre-commit-config.yaml(ruff + pyright) was
added. Generated stubs were fixed along the way — parser functions
previously landed in the root stub, where they do not exist at
runtime, leavingraydriver.grbl.parseruntyped. - CI simplified to a plain four-platform test matrix
(ubuntu, windows, macos-15-intel, macos-15).
Full changelog: v0.1.2...v0.1.3
v0.1.2
v0.1.1
v0.1.0
Full Changelog: https://github.com/barebaric/raydriver/commits/v0.1.0