vcswatch reports that
this package seems to have a new changelog entry (version
1:2.10.0~pre1, distribution
UNRELEASED) and new commits
in its VCS. You should consider whether it's time to make
an upload.
Here are the relevant commit messages:
commit 64efb28cd77a16b45ade81e576c784cdc574f40e
Merge: a1d46dbe be5cf546
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Tue Sep 8 02:11:09 2026 -0400
Merge pull request #4506 from grandixximo/gmoccapy-early-sigterm
gmoccapy: arm a minimal SIGTERM handler before the slow startup phase
commit be5cf546e28e6fd7d4022cbf6c4c586e4237346b
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Tue Sep 8 13:36:32 2026 +0800
gmoccapy: arm a minimal SIGTERM handler before the slow startup phase
699af8e5ae arms the full SIGTERM/SIGINT handler only right before
Gtk.main(). A shutdown SIGTERM landing earlier, during the imports or
app construction, hits the default disposition and kills the process
mid-startup: no SystemExit unwind, so the atexit child cleanup and the
_hal Py_AtExit hook never run. On a loaded machine this window
stretches past task startup, so real shutdowns and the ui-smoke
gmoccapy-quit driver can land SIGTERM in it.
Install a minimal handler that exits through SystemExit as the first
action of the script; the full handler replaces it when installed.
Verified locally: SIGTERM in the import window now exits 0 with a
clean linuxcnc shutdown, where the unpatched script died with 143.
commit a1d46dbeaaa03ed15f447139418414f1179bd3ac
Merge: 76156126 ed8c87a2
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Mon Sep 7 07:16:42 2026 -0400
Merge pull request #4420 from greatEndian/fix/ruckig-log-flood
tp: rate-limit Ruckig plan-failure logging to once per segment
commit ed8c87a29b98752ba26f4d02a0122e7ab9d182ce
Author: greatEndian <chabron94@gmail.com>
Date: Fri Jun 26 10:28:10 2026 -0400
tp: rate-limit Ruckig plan-failure logging to once per segment
A segment whose inputs Ruckig can never solve keeps ruckig_planned=0,
so tpCalculateSCurveAccel re-enters its failure branch every servo
cycle and logs at the full servo rate (e.g. 1kHz). Motion is
unaffected (it falls back to trapezoidal), but over a long run this
floods the kernel log / journald with GBs of identical records.
Add per-segment "already logged" flags to TC_STRUCT (reset by tcInit
on every new segment) and log each failure once, tagged with the
segment id. Not re-armed on a later success within the same segment,
so an oscillating fail/succeed segment also cannot flood. No change to
motion behaviour. master's own tpCalculateSCurveAccel already carries a
scurve_jerk_warned once-only guard for the adjacent warning.
tpCalculateSCurveAccel has five distinct Ruckig failure sites, each
retried every servo cycle:
- pool acquire: ruckig_planner stays NULL and is re-acquired next cycle
for as long as the preallocated pool is exhausted;
- velocity control, replan failed: keeps the previous trajectory and
falls straight back in on the next cycle;
- velocity control, first attempt failed: returns
TP_SCURVE_ACCEL_ERROR, which only makes the caller use trapezoidal
for that one cycle before calling back in;
- position control, replan failed / first attempt failed: the same two
cases on the position-control path.
Each site gets its own flag rather than one shared flag, so a segment
that hits more than one failure mode (e.g. pool-acquire, then a plan
failure once a planner frees up) still logs each mode once. A single
shared flag would report only whichever fired first.
The first-attempt position-control ERR dump also regains plan_result,
which was previously only on the replan branch, so the give-up path
again shows which limit Ruckig objected to. The velocity-control
first-attempt warning carries it too, for symmetry.
commit 76156126d8b12985eeb1cc70ae0215d6fa5f7233
Merge: 14d739aa 63532ab1
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Sun Sep 6 21:50:02 2026 -0400
Merge pull request #4504 from weblate/weblate-linuxcnc-linuxcnc-docs
Translations update from Hosted Weblate
commit 63532ab13ed98e60085ae7da2e83f1c7d1e0550f
Author: Américo Monteiro <a_monteiro@gmx.com>
Date: Mon Sep 7 02:52:54 2026 +0200
Translated using Weblate (Portuguese)
Currently translated at 34.1% (11595 of 33994 strings)
Author: Américo Monteiro <a_monteiro@gmx.com>
Co-authored-by: Américo Monteiro <a_monteiro@gmx.com>
Translate-URL: https://hosted.weblate.org/projects/linuxcnc/linuxcnc-docs/pt/
Translation: LinuxCNC/LinuxCNC Documentation
commit e09b576d161818fa302877646c370271a7ed3359
Author: Salvador Peña <salvadorp74@hotmail.com>
Date: Mon Sep 7 02:52:52 2026 +0200
Translated using Weblate (Spanish)
Currently translated at 35.3% (12022 of 33994 strings)
Author: Salvador Peña <salvadorp74@hotmail.com>
Co-authored-by: Salvador Peña <salvadorp74@hotmail.com>
Translate-URL: https://hosted.weblate.org/projects/linuxcnc/linuxcnc-docs/es/
Translation: LinuxCNC/LinuxCNC Documentation
commit ade964b269d4120284b0e305eff3f907f0f75dbf
Author: Luca Toniolo <toniolo.luca@outlook.com>
Date: Mon Sep 7 02:52:49 2026 +0200
Translated using Weblate (Tamil)
Currently translated at 81.4% (27689 of 33994 strings)
Author: Luca Toniolo <toniolo.luca@outlook.com>
Translated using Weblate (Portuguese)
Currently translated at 34.1% (11595 of 33994 strings)
Author: Luca Toniolo <toniolo.luca@outlook.com>
Translated using Weblate (Ukrainian)
Currently translated at 99.6% (33879 of 33994 strings)
Author: Luca Toniolo <toniolo.luca@outlook.com>
Translated using Weblate (Russian)
Currently translated at 34.3% (11669 of 33994 strings)
Author: Luca Toniolo <toniolo.luca@outlook.com>
Translated using Weblate (German)
Currently translated at 99.6% (33891 of 33994 strings)
Author: Luca Toniolo <toniolo.luca@outlook.com>
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 1.3% (450 of 33994 strings)
Author: Luca Toniolo <toniolo.luca@outlook.com>
Translated using Weblate (Norwegian Bokmål)
Currently translated at 4.4% (1503 of 33994 strings)
Author: Luca Toniolo <toniolo.luca@outlook.com>
Translated using Weblate (French)
Currently translated at 2.4% (827 of 33994 strings)
Author: Luca Toniolo <toniolo.luca@outlook.com>
Translated using Weblate (Spanish)
Currently translated at 35.3% (12022 of 33994 strings)
Author: Luca Toniolo <toniolo.luca@outlook.com>
Co-authored-by: Luca Toniolo <toniolo.luca@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/linuxcnc/linuxcnc-docs/de/
Translate-URL: https://hosted.weblate.org/projects/linuxcnc/linuxcnc-docs/es/
Translate-URL: https://hosted.weblate.org/projects/linuxcnc/linuxcnc-docs/fr/
Translate-URL: https://hosted.weblate.org/projects/linuxcnc/linuxcnc-docs/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/linuxcnc/linuxcnc-docs/pt/
Translate-URL: https://hosted.weblate.org/projects/linuxcnc/linuxcnc-docs/ru/
Translate-URL: https://hosted.weblate.org/projects/linuxcnc/linuxcnc-docs/ta/
Translate-URL: https://hosted.weblate.org/projects/linuxcnc/linuxcnc-docs/uk/
Translate-URL: https://hosted.weblate.org/projects/linuxcnc/linuxcnc-docs/zh_Hans/
Translation: LinuxCNC/LinuxCNC Documentation
commit 14d739aa99587b1c467640c5907ed806936cf475
Author: Cmorley <chrisinnanaimo@hotmail.com>
Date: Sat Sep 5 19:03:13 2026 -0700
qtvcp -3pcenter panel: update for small improvements
Better feedback text, better goto position path.
MarkoPolo
commit 8bf4605ae81042248add031e94c77300406e0413
Merge: fa910f12 699af8e5
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Fri Sep 4 20:23:04 2026 -0400
Merge pull request #4501 from grandixximo/gmoccapy-quit-4500
gmoccapy: fix SIGTERM/SIGINT hang while a modal dialog is up
commit 699af8e5ae645788355be42437804795afcc363f
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Sat Sep 5 07:29:15 2026 +0800
gmoccapy: fix SIGTERM/SIGINT hang while a modal dialog is up
A modal dialog's gtk_dialog_run() loop is invisible to Gtk.main_quit(), so the GUI survived SIGTERM and the ui-smoke gmoccapy-quit test timed out. _terminate now destroys all other toplevels so run() returns and the unwind proceeds, with a forced exit as backstop.
Also guard set_max_undo_levels() in hal_sourceview (dropped by newer GtkSourceView 4; the AttributeError popped the modal error dialog on CI), and harden the excepthook against a partially built app object.
commit fa910f12394ba1b76edc4c5b3ac67955d9d79ace
Author: Cmorley <chrisinnanaimo@hotmail.com>
Date: Wed Sep 2 18:32:31 2026 -0700
axis/gmoccapy -docs: add info qtvcp is embedable too
commit ee0ed55ec2e0662d2805519308a7859cd927e8f4
Author: Cmorley <chrisinnanaimo@hotmail.com>
Date: Wed Sep 2 06:03:03 2026 -0700
qtvcp -docs : add missing center finder image
commit dc61c5a384784882a6f86125fe38b1780afd5d92
Merge: 098cd98a a4cd6d9a
Author: BsAtHome <bertho@vagrearg.org>
Date: Wed Sep 2 10:59:31 2026 +0200
Merge pull request #4136 from grandixximo/ui-tests-phase3
ui-smoke phase 3: screenshots, writable config mirrors, homing settle
commit a4cd6d9ad459762e64b554f0239d09af2d70c098
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Wed Sep 2 15:08:36 2026 +0800
tests: ui-smoke phase 3, screenshots, reference diffs, crash dumps, driver hardening
Each GUI smoke test now captures a screenshot on failure and a settled confirm shot on pass, uploaded as CI artifacts. The confirm shot is compared against a committed reference.png at 0% fuzz, writing red-highlight and absolute-difference diff images; the comparison never fails a test, it records rendering drift (freetype versions differ across distros) so preview regressions are visible at review time.
Crash dumps: runtests -d opts in; on a crashing GUI test a gdb backtrace is printed from the core, collected via coredumpctl on systemd hosts or a plain-file core_pattern the CI workflow arms at job level. No sudo in the test scripts. gdb moves to control build-deps so package-arch tests have it too.
gmoccapy runs against a writable config mirror with a seeded preference file so the first-run modal stays hidden; PROGRAM_PREFIX is pointed at the real nc_files for the mirror.
Driver hardening: ensure_state/ensure_mode re-verify with a retry budget, and home_all / run_program retry their whole command sequence, so a late GUI startup revert (gmoccapy's own ESTOP or mode reset landing after the state checks) costs one retry instead of failing the test. No fixed sleep in the driver is load-bearing; the settles only keep transient warning dialogs out of the screenshots.
Adds the touchy-fit test: boots touchy on a 1024x768 screen and fails if the window exceeds it.
commit 098cd98a6c03cc6fa8748b862e5fe09702529bae
Merge: 092cef0b 1017e5a1
Author: BsAtHome <bertho@vagrearg.org>
Date: Wed Sep 2 09:41:23 2026 +0200
Merge pull request #4496 from grandixximo/fix/docs-qtvcp-center-finder-image
docs: drop dangling qtvcp_center_finder image ref
commit 1017e5a19ca3a92dba10122ae8fb3bc802058765
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Wed Sep 2 03:06:59 2026 -0400
docs: drop dangling qtvcp_center_finder image ref
24eb9899c9 referenced the screenshot without committing it, which broke the docs build.
commit 092cef0b3075543b6bae233215e442b4d33bda47
Merge: 24eb9899 49570d43
Author: BsAtHome <bertho@vagrearg.org>
Date: Wed Sep 2 08:53:37 2026 +0200
Merge pull request #4495 from grandixximo/rs274ngc-drop-dead-rtapi-math
rs274ngc: drop dead rtapi_math.h includes
commit 24eb9899c9028335e33083217bb777f32effeb5c
Author: Cmorley <chrisinnanaimo@hotmail.com>
Date: Tue Sep 1 19:46:24 2026 -0700
qtvcp -add 3pcenter panel
find center with 2 points.
Donated by MarkoPolo
commit 49570d43eaf79a5769db132d39f20fe500b1f649
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Tue Sep 1 21:46:02 2026 -0400
rs274ngc: drop dead rtapi_math.h includes
interp_arc.cc, interp_execute.cc and interp_find.cc included
<rtapi_math.h> but use no rtapi_ symbols. Their math functions and
M_PIl come from <math.h>, which they already include after defining
_GNU_SOURCE. The interpreter is built only as the userspace
librs274.so, so the kernel branch of rtapi_math.h never applied.
Completes the include cleanup that #4493 did for interp_convert.cc
and interp_read.cc.
commit 10ca5afdb599878193562d284f0dd553542ec614
Merge: 7d381974 e0a4bb26
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Tue Sep 1 20:37:38 2026 -0400
Merge pull request #4491 from alex-pres/pr-interp-speedup-number-parse
optimization: rs274ngc: parse numbers with std::from_chars
commit 7d381974df563bc50a755d201c63272e383fa1ce
Merge: 1c6b998b cdeeaa40
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Tue Sep 1 20:37:07 2026 -0400
Merge pull request #4493 from BsAtHome/fix_rs274ngc-no-rtapi
rs274ngc: Don't use RTAPI. This is non-RT userspace code
commit 1c6b998b66b9c7ba42728565622f3489cddc1a57
Merge: ca409f39 02e9984c
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Tue Sep 1 20:13:59 2026 -0400
Merge pull request #4490 from BsAtHome/halgs_fix-tests-components
tests: Update all components in tests to getter/setter
commit ca409f3934546b1cab68c7ad95b1d041adf75192
Merge: d566b711 0c5566b0
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Tue Sep 1 18:29:38 2026 -0400
Merge pull request #4494 from weblate/weblate-linuxcnc-linuxcnc-docs
Translations update from Hosted Weblate
commit 0c5566b09191a52eeb8f506baead56b6a9c07182
Author: Américo Monteiro <a_monteiro@gmx.com>
Date: Tue Sep 1 17:53:02 2026 +0200
Translated using Weblate (Portuguese)
Currently translated at 32.6% (11108 of 33994 strings)
Author: Américo Monteiro <a_monteiro@gmx.com>
Co-authored-by: Américo Monteiro <a_monteiro@gmx.com>
Translate-URL: https://hosted.weblate.org/projects/linuxcnc/linuxcnc-docs/pt/
Translation: LinuxCNC/LinuxCNC Documentation
commit 105ee289278c6743573d5aba5037f9dfb224b9b2
Author: Luca Toniolo <toniolo.luca@outlook.com>
Date: Tue Sep 1 17:52:59 2026 +0200
Translated using Weblate (Tamil)
Currently translated at 81.4% (27681 of 33994 strings)
Author: Luca Toniolo <toniolo.luca@outlook.com>
Translated using Weblate (Ukrainian)
Currently translated at 99.6% (33878 of 33994 strings)
Author: Luca Toniolo <toniolo.luca@outlook.com>
Translated using Weblate (Russian)
Currently translated at 34.3% (11668 of 33994 strings)
Author: Luca Toniolo <toniolo.luca@outlook.com>
Translated using Weblate (German)
Currently translated at 99.6% (33891 of 33994 strings)
Author: Luca Toniolo <toniolo.luca@outlook.com>
Translated using Weblate (Norwegian Bokmål)
Currently translated at 4.4% (1500 of 33994 strings)
Author: Luca Toniolo <toniolo.luca@outlook.com>
Translated using Weblate (French)
Currently translated at 2.1% (715 of 33994 strings)
Author: Luca Toniolo <toniolo.luca@outlook.com>
Translated using Weblate (Spanish)
Currently translated at 35.0% (11903 of 33994 strings)
Author: Luca Toniolo <toniolo.luca@outlook.com>
Co-authored-by: Luca Toniolo <toniolo.luca@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/linuxcnc/linuxcnc-docs/de/
Translate-URL: https://hosted.weblate.org/projects/linuxcnc/linuxcnc-docs/es/
Translate-URL: https://hosted.weblate.org/projects/linuxcnc/linuxcnc-docs/fr/
Translate-URL: https://hosted.weblate.org/projects/linuxcnc/linuxcnc-docs/nb_NO/
Translate-URL: https://hosted.weblate.org/projects/linuxcnc/linuxcnc-docs/ru/
Translate-URL: https://hosted.weblate.org/projects/linuxcnc/linuxcnc-docs/ta/
Translate-URL: https://hosted.weblate.org/projects/linuxcnc/linuxcnc-docs/uk/
Translation: LinuxCNC/LinuxCNC Documentation
commit b9b0dd787029c620cfe99c0ba7eb4523c71d5e29
Author: Salvador Peña <salvadorp74@hotmail.com>
Date: Tue Sep 1 17:52:51 2026 +0200
Translated using Weblate (Spanish)
Currently translated at 35.0% (11903 of 33994 strings)
Author: Salvador Peña <salvadorp74@hotmail.com>
Co-authored-by: Salvador Peña <salvadorp74@hotmail.com>
Translate-URL: https://hosted.weblate.org/projects/linuxcnc/linuxcnc-docs/es/
Translation: LinuxCNC/LinuxCNC Documentation
commit cdeeaa409e5867f4850157ab0d18b6ddfe57ae60
Author: Bertho Stultiens <bertho@vagrearg.org>
Date: Tue Sep 1 14:48:23 2026 +0200
rs274ngc: Don't use RTAPI. This is non-RT userspace code.
commit e0a4bb26f63f6f807ae6832de5b78c42ed35de55
Author: Alexey Presnyakov <309782758+alex-pres@users.noreply.github.com>
Date: Mon Aug 31 20:34:12 2026 +0400
rs274ngc: parse numbers with std::from_chars
read_real_number built a std::string and a std::stringstream for every number
in a program, and read_integer_unsigned handed the digits it had already
delimited to sscanf("%d"). std::from_chars needs neither, and is
locale-independent where the stream was not. Accepted syntax, parsed values
and both error messages are unchanged, except that a magnitude too small for
a double, and a line number too large for an int, are now parse errors.
Parsing a 13.7M line program is 2.1x faster.
commit d566b71161a159a7f4fbbf61b9e6693f6b4bfbe4
Merge: 3f877213 37520737
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Mon Aug 31 07:12:52 2026 -0400
Merge pull request #4489 from BsAtHome/fix_hostmot2-llio-spidriver-retval
hostmot2: Fix the (superseded) SPI driver's low-level IO return values
commit 02e9984ccd72022d96697195434e884eb5fdf5be
Author: Bertho Stultiens <bertho@vagrearg.org>
Date: Sun Aug 30 18:03:07 2026 +0200
tests: Update all components in tests to getter/setter.
commit 3f87721343f2f6ad5940a2acac60a2c9262707f4
Merge: d17b036e 793a04c1
Author: BsAtHome <bertho@vagrearg.org>
Date: Mon Aug 31 00:22:32 2026 +0200
Merge pull request #4444 from grandixximo/fix/hal-gremlin-is-lathe
gladevcp: fix velocity DRO row position on non-lathes
commit 375207373eaf717634defa0e30ee396e03a95820
Author: Bertho Stultiens <bertho@vagrearg.org>
Date: Sun Aug 30 14:31:24 2026 +0200
hostmot2: Fix the (superseded) SPI driver's low-level IO return values.
commit d17b036e072ddaaa31ab77e4e1345a952a8bdb17
Merge: 54cd4d6b 72db1592
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Sat Aug 29 02:40:06 2026 -0400
Merge pull request #4469 from BsAtHome/halgs_rm-halpr-function-access
hal: Stop exporting halpr_*() private functions and shared memory base
commit 54cd4d6b23d3496a9a3d7bc9ce7373e1e63f3e83
Merge: 0eb76c61 e59dc278
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Sat Aug 29 02:39:25 2026 -0400
Merge pull request #4470 from BsAtHome/fix_docs-rm-hal-legacy
docs: Update HAL API documentation - remove legacy API docs
commit 0eb76c619dbe544a356fc548de817ca91492ca57
Merge: f3532938 ddd7e5ca
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Sat Aug 29 02:37:12 2026 -0400
Merge pull request #4472 from BsAtHome/halgs_deprecate-old-api
hal: Deprecate old HAL API
commit f35329387d4baeb2491862b0af607793fbda071b
Merge: 49660cb6 455ef16d
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Sat Aug 29 01:04:35 2026 -0400
Merge pull request #4483 from BsAtHome/fix_mb2hal-modinfo
mb2hal: Fix module info placement and cppcheck problem
commit 455ef16db01c82f8c7ec3a50d64038a48018f4ac
Author: Bertho Stultiens <bertho@vagrearg.org>
Date: Fri Aug 28 14:26:05 2026 +0200
mb2hal: Fix module info placement and cppcheck problem.
commit 49660cb6439326da1e31664bfde436633223030e
Merge: d47bccc9 3570f8ab
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Fri Aug 28 08:43:25 2026 -0400
Merge pull request #4479 from weblate/weblate-linuxcnc-linuxcnc-docs
Translations update from Hosted Weblate
commit 3570f8abff58db91c41b5fefe5950686b3bb4018
Author: Luca Toniolo <toniolo.luca@outlook.com>
Date: Thu Aug 27 17:25:57 2026 +0200
Translated using Weblate (Tamil)
Currently translated at 81.4% (27681 of 33994 strings)
Author: Luca Toniolo <toniolo.luca@outlook.com>
Translated using Weblate (Tamil)
Currently translated at 81.4% (27680 of 33994 strings)
Author: Luca Toniolo <toniolo.luca@outlook.com>
Co-authored-by: Luca Toniolo <toniolo.luca@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/linuxcnc/linuxcnc-docs/ta/
Translation: LinuxCNC/LinuxCNC Documentation
commit 44a5145664132048a301a1f0ccf8c2680bc8f3f0
Author: Salvador Peña <salvadorp74@hotmail.com>
Date: Thu Aug 27 17:25:56 2026 +0200
Translated using Weblate (Spanish)
Currently translated at 34.7% (11801 of 33994 strings)
Author: Salvador Peña <salvadorp74@hotmail.com>
Translated using Weblate (Spanish)
Currently translated at 34.7% (11797 of 33994 strings)
Author: Salvador Peña <salvadorp74@hotmail.com>
Translated using Weblate (Spanish)
Currently translated at 34.6% (11792 of 33994 strings)
Author: Salvador Peña <salvadorp74@hotmail.com>
Co-authored-by: Salvador Peña <salvadorp74@hotmail.com>
Translate-URL: https://hosted.weblate.org/projects/linuxcnc/linuxcnc-docs/es/
Translation: LinuxCNC/LinuxCNC Documentation
commit d47bccc94a40852ca04dadb3f062f709e95a651c
Merge: b7a619bc bdb13f66
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Wed Aug 26 21:50:14 2026 -0400
Merge pull request #4478 from weblate/weblate-linuxcnc-linuxcnc-docs
Translations update from Hosted Weblate
commit bdb13f66b3c8c86f25f36306ff63cdcc3183358b
Author: Salvador Peña <salvadorp74@hotmail.com>
Date: Thu Aug 27 00:34:47 2026 +0200
Translated using Weblate (Spanish)
Currently translated at 34.5% (11758 of 33994 strings)
Author: Salvador Peña <salvadorp74@hotmail.com>
Co-authored-by: Salvador Peña <salvadorp74@hotmail.com>
Translate-URL: https://hosted.weblate.org/projects/linuxcnc/linuxcnc-docs/es/
Translation: LinuxCNC/LinuxCNC Documentation
commit 365ebe0a1c1ad407ee73970632ba38667513f605
Author: Luca Toniolo <toniolo.luca@outlook.com>
Date: Thu Aug 27 00:34:46 2026 +0200
Translated using Weblate (Spanish)
Currently translated at 34.3% (11687 of 33994 strings)
Author: Luca Toniolo <toniolo.luca@outlook.com>
Co-authored-by: Luca Toniolo <toniolo.luca@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/linuxcnc/linuxcnc-docs/es/
Translation: LinuxCNC/LinuxCNC Documentation
commit de93078052a3c76af68650c18adeb7513b662dc0
Author: Américo Monteiro <a_monteiro@gmx.com>
Date: Thu Aug 27 00:34:46 2026 +0200
Translated using Weblate (Portuguese)
Currently translated at 30.0% (10200 of 33994 strings)
Author: Américo Monteiro <a_monteiro@gmx.com>
Co-authored-by: Américo Monteiro <a_monteiro@gmx.com>
Translate-URL: https://hosted.weblate.org/projects/linuxcnc/linuxcnc-docs/pt/
Translation: LinuxCNC/LinuxCNC Documentation
commit 36fdc7d3086defb94e733536701e4d7862649507
Author: Salvador Peña <salvadorp74@hotmail.com>
Date: Thu Aug 27 00:34:45 2026 +0200
Translated using Weblate (Spanish)
Currently translated at 34.3% (11687 of 33994 strings)
Author: Salvador Peña <salvadorp74@hotmail.com>
Translated using Weblate (Spanish)
Currently translated at 34.2% (11626 of 33994 strings)
Author: Salvador Peña <salvadorp74@hotmail.com>
Translated using Weblate (Spanish)
Currently translated at 33.9% (11552 of 33994 strings)
Author: Salvador Peña <salvadorp74@hotmail.com>
Co-authored-by: Salvador Peña <salvadorp74@hotmail.com>
Translate-URL: https://hosted.weblate.org/projects/linuxcnc/linuxcnc-docs/es/
Translation: LinuxCNC/LinuxCNC Documentation
commit ddd7e5caac80bcbd344f235eb242bb8b5d992938
Author: Bertho Stultiens <bertho@vagrearg.org>
Date: Tue Aug 25 23:04:58 2026 +0200
hal: Deprecate old HAL API, hal_XXX_t types and data access union.
commit b7a619bc64b4baff6a0b5e330fe728c224822ec0
Merge: b251e356 724711c5
Author: BsAtHome <bertho@vagrearg.org>
Date: Tue Aug 25 18:34:43 2026 +0200
Merge pull request #4467 from grandixximo/fix-4465-abort-spindle
interp: don't restore spindle speed on abort state restore
commit e59dc278bca480f5e567bcfbc43ed84edc517828
Author: Bertho Stultiens <bertho@vagrearg.org>
Date: Tue Aug 25 15:03:33 2026 +0200
docs: Update HAL API documentation - remove legacy API docs
commit 72db1592b0b86cce903c295291e71394da3804d2
Author: Bertho Stultiens <bertho@vagrearg.org>
Date: Tue Aug 25 13:20:41 2026 +0200
hal: Stop exporting halpr_*() private functions and shared memory base.
commit 724711c5699d865ed401f43122e955fe8ac283e3
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Tue Aug 25 07:27:01 2026 +0800
interp: don't restore spindle speed on abort state restore
On abort, restore_from_tag() executes a G-code string built from the difference between the motion state tag and the interpreter readahead state. gen_settings() unconditionally appends the saved S word, so after an early abort the restore queued EMC_SPINDLE_SPEED onto the interp_list and it was issued after the abort's spindle stop, turning the spindle back on. Late aborts were unaffected because tag and readahead state agree by then and no restore command is generated.
Exclude the spindle speed from the abort restore, as is already done for M codes. The M72 restore_settings() path keeps restoring it, since there the S word must take effect mid-program.
commit b251e3565d91ed8fad8255fe7d3cf7b4ee7b5f0e
Merge: 7a08fc37 e68098ee
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Mon Aug 24 22:22:27 2026 +0800
Merge pull request #4464 from BsAtHome/halgs_comp-message
hal: Update also message component to getter/setter
commit 7a08fc3748382eb6b064c037a1b7ee24812ad145
Merge: a6bf436c 0b83d376
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Mon Aug 24 20:40:24 2026 +0800
Merge pull request #4459 from BsAtHome/fix_raster-test-rt-non-rt-race
tests: Fix RT/non-RT race in raster checking output after setting input
commit a6bf436c0d460078986a3e22698047d02c779030
Merge: 510f2c93 827d8d0f
Author: BsAtHome <bertho@vagrearg.org>
Date: Mon Aug 24 14:12:19 2026 +0200
Merge pull request #4447 from grandixximo/mtconnect-userpages
mtconnect: optional user pages served by the embedded HTTP agent
commit 510f2c9340897f364bc064256fe5cb7e5e22c205
Merge: f64b4905 4dee7c33
Author: BsAtHome <bertho@vagrearg.org>
Date: Mon Aug 24 10:54:45 2026 +0200
Merge pull request #4462 from grandixximo/report-fold-guard
include-dep-report: fold a subdirectory that has no Submakefile
commit f64b49059b678cc897b1bd95d0737cadc4a0dc7b
Merge: fe18b8a2 9e60cf80
Author: BsAtHome <bertho@vagrearg.org>
Date: Mon Aug 24 10:54:20 2026 +0200
Merge pull request #4463 from grandixximo/tcl-skip-detect-fix
tests: detect Tcl HAL extensions functionally in skip scripts
commit e68098ee69e5c3efd03af8d6a3f263bc9434b0d1
Author: Bertho Stultiens <bertho@vagrearg.org>
Date: Mon Aug 24 10:53:04 2026 +0200
hal: Update also message component to getter/setter.
commit 9e60cf8005e45132b92666b537a344f029586895
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Mon Aug 24 15:27:39 2026 +0800
tests: detect Tcl HAL extensions functionally in skip scripts
TCLLIBPATH is only exported by rip-environment, so the skip scripts
wrongly skipped twopass, twopass-personality and tclsh-extensions when
testing installed packages (package-arch CI, SYSTEM_BUILD=1). Ask
tclsh to load the package instead, the way the tests use it. catch is
needed because tclsh reads stdin interactively and exits 0 on error.
Fixes #4460
commit 4dee7c339dc207cf0bf7aebf8fe4952ce71a9ac2
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Mon Aug 24 17:37:43 2026 +1000
include-dep-report: fold a subdirectory that has no Submakefile
folded_dirs() only looked at directories that carry a Submakefile of their
own. The six libnml subdirectories used to pass that on their zero-byte
Submakefiles, which #4456 has since retired, so they no longer reach the
test that folds them and the report invents the five-way libnml cycle again.
Whether the subdirectory has a Submakefile was never the question. Whether
the parent's Submakefile lists its sources is, and that test stands on its
own. Dropping the guard folds libnml again and picks up
emc/usr_intf/axis/extensions, whose parent lists its sources too. emc/tp
stays unfolded, as it must, because the top-level Makefile builds it.
The report goes back to one cycle, emc/motion and emc/tp.
commit 0b83d37656364cb59a7dea9059acf1974581703f
Author: Bertho Stultiens <bertho@vagrearg.org>
Date: Mon Aug 24 08:18:47 2026 +0200
tests: Fix RT/non-RT race in raster checking output after setting input.
commit fe18b8a204f6585400bb2f17ee6f781dab4c2307
Merge: 3f38f437 3992782c
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Mon Aug 24 13:47:06 2026 +0800
Merge pull request #4457 from BsAtHome/fix_libnml-rtapi-dependency
libnml: Remove the RTAPI/HAL dependency
commit 3992782c1bf22ce847329dbd98f8a57f27257404
Author: Bertho Stultiens <bertho@vagrearg.org>
Date: Sun Aug 23 17:48:07 2026 +0200
libnml: Remove the RTAPI dependency (via HAL's .so) in the non-RT library.
commit 3f38f437328517fcc3c88740b7631b90eab0b223
Merge: 2e62cd99 9bbdcff6
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Mon Aug 24 13:04:00 2026 +0800
Merge pull request #4458 from BsAtHome/halgs_hal_priv-exclusion-warn
hal: Make including HAL's private header issue a compiler warning
commit 9bbdcff69c313d9c8d2ec2726ad78154587ccafa
Author: Bertho Stultiens <bertho@vagrearg.org>
Date: Sun Aug 23 23:48:09 2026 +0200
hal: Make including HAL's private header issue a compiler warning.
commit 2e62cd990c50dcc4b10fe8568534b40f41484873
Merge: 18e32ff7 cfdd5ab2
Author: BsAtHome <bertho@vagrearg.org>
Date: Sun Aug 23 18:36:29 2026 +0200
Merge pull request #4456 from grandixximo/retire-empty-submakefiles
build: retire the empty Submakefiles left behind by 82f05bccb3
commit 18e32ff748ab070625cd0fe4db4b37134b28f168
Merge: ab930078 e98c0569
Author: BsAtHome <bertho@vagrearg.org>
Date: Sun Aug 23 18:35:14 2026 +0200
Merge pull request #4452 from grandixximo/header-export-one-rule
build: export headers with one rule instead of ten
commit e98c056964b38d323b7b655fbf62f916e9fc64b0
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Sat Aug 22 20:40:56 2026 +1000
build: export headers with one rule instead of ten
Every exported header was declared twice, once in SRCHEADERS and once in
a per-directory list or a one-off rule carrying the cp. SRCHEADERS is the
list, so one rule now copies from it and the ten recipes go.
hal/drivers/mesa-hostmot2/Submakefile held nothing but its copy rule, so
it goes rather than being left empty, and its SUBDIRS entry with it since
SUBDIRS exists only to name the Submakefiles.
headersclean empties ../include rather than removing $(HEADERS). A header
dropped from SRCHEADERS used to leave its copy behind, and a stale copy is
what an angled include resolves to.
commit cfdd5ab2e605583e42e10d9274492b54e298ea4d
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Sun Aug 23 20:46:37 2026 +1000
build: retire the empty Submakefiles left behind by 82f05bccb3
Their SUBDIRS entries go with them, since SUBDIRS exists only to name
the Submakefiles.
commit ab930078a55e06a8c591fe25ade20f729be22d34
Merge: aff321fd 279862a2
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Sun Aug 23 07:17:49 2026 +0800
Merge pull request #4450 from BsAtHome/halgs_rm-pyhal-module
hal: Remove pyhal module that is incompatible with getter/setter
commit aff321fd831efc5c40800b2ae147206d6c820b57
Merge: 009dc496 329f0bd5
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Sun Aug 23 07:17:34 2026 +0800
Merge pull request #4449 from BsAtHome/halgs_rm-old-hal-hh
hal: Remove old unused hal.hh
commit 009dc496c0b4bb712cb517ae64b6b72c1f160bec
Merge: e5c8c75f dc05c2e7
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Sun Aug 23 07:01:05 2026 +0800
Merge pull request #4451 from Sigma1912/patch-1
SimConfigs: Increase VERSION in 3axistutorial
commit e5c8c75fadc2a37902a9b23d4d4e1efbe619f497
Merge: 5c41560e 858a83bb
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Sun Aug 23 06:43:52 2026 +0800
Merge pull request #4369 from BsAtHome/halgs_hostmot2
hal: Update the hostmot2 drivers to getter/setter
commit dc05c2e7db8c50e1bcc4be744fa0d2b1c8f097c5
Author: Sigma1912 <46067220+Sigma1912@users.noreply.github.com>
Date: Sat Aug 22 16:32:37 2026 +0200
SimConfigs: Increase VERSION in 3axistutorial
Increase [EMC]VERSION to 1.1 so the 'automatic update' popup does not show.
commit 279862a2bda312945e8b6f04cd2d233b21268c14
Author: Bertho Stultiens <bertho@vagrearg.org>
Date: Sat Aug 22 13:41:42 2026 +0200
hal: Remove pyhal module that is incompatible with getter/setter.
commit 5c41560ebbc3a40f84a5547bc6f7c5cd9278ba6b
Merge: fb5f59b1 2751ae85
Author: BsAtHome <bertho@vagrearg.org>
Date: Sat Aug 22 13:21:27 2026 +0200
Merge pull request #4448 from grandixximo/include-brackets
src: include exported headers with angle brackets where they are used
commit 329f0bd5d385d7e68002a210c299e61a31c1e8dc
Author: Bertho Stultiens <bertho@vagrearg.org>
Date: Sat Aug 22 13:03:37 2026 +0200
hal: Remove old unused hal.hh. It will be replaced at a later stage.
commit 2751ae8561b8c5ce3cf34713e1d25c1df1b407a0
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Wed Aug 12 21:30:56 2026 +1000
src: include exported headers with angle brackets where they are used
The build copies every SRCHEADERS entry into include/, so an exported
header exists twice: the source under src/ and the copy modules compile
against. A quoted include searches the includer's own directory before
the -I path, an angled include does not, so the two forms can reach
different copies of the same header and both compile.
An exported header travels to include/ and takes its siblings with it,
so it keeps the quoted form and finds them wherever it lands, and so
does its implementation, wanting the source rather than a stale export.
The files changed here are users, and build out of tree where only the
exported copies exist.
commit fb5f59b185849c46d50542d564a1bf5d65ced0a8
Merge: ce5c6890 c3c6fc24
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Sat Aug 22 15:46:08 2026 +0800
Merge pull request #4440 from Sigma1912/Glnav_Add_is_lathe
Glnav: Add is_lathe method
commit ce5c6890489b2f06097245ef07e3e9ff9fd66e33
Merge: 3aadbe0c 813da03e
Author: BsAtHome <bertho@vagrearg.org>
Date: Sat Aug 22 09:40:30 2026 +0200
Merge pull request #4438 from grandixximo/unused-includes
tree: remove includes that nothing in the file uses
commit 3aadbe0cc5032b1ece804d5ae2f7655cde9f2e7b
Merge: a1559d17 2508c98f
Author: BsAtHome <bertho@vagrearg.org>
Date: Sat Aug 22 09:39:58 2026 +0200
Merge pull request #4445 from grandixximo/nml-tooldata-cut
emc: cut the nml_intf dependency on tooldata
commit a1559d175ca3713011af2ee921bac089ba20961e
Merge: 458a64b5 6973b377
Author: BsAtHome <bertho@vagrearg.org>
Date: Sat Aug 22 09:39:37 2026 +0200
Merge pull request #4446 from grandixximo/report-buckets
include-dep-report: bucket by what the build links, not by directory depth
commit 458a64b5f6dcd297ad14db3973256d3880444074
Merge: fe00dfbd 515e9dc7
Author: BsAtHome <bertho@vagrearg.org>
Date: Sat Aug 22 09:39:05 2026 +0200
Merge pull request #4443 from grandixximo/posemath-sincos
posemath: retire pm_sincos
commit c3c6fc2479316fd5015b8448252cece414d0b3d2
Author: david mueller <mueller_david@hotmail.com>
Date: Fri Aug 21 16:51:29 2026 +0200
Glnav: Add is_lathe method
Currently undefined and preview widgets that need it (gremlin, axis, qt5_graphics) override it
commit 827d8d0f0ec751c42854e9790f33061588a84e74
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Sat Aug 22 10:48:12 2026 +0800
mtconnect: harden user pages serving
- Canonicalize USER_PAGES once and check containment with commonpath();
a plain startswith() prefix check is bypassable via a sibling directory
sharing the name prefix (pages vs pages_evil).
- Read files as bytes and pick the Content-Type with mimetypes; a text-mode
read 500s on binary assets, and browsers refuse to run js/css served as
text/html, so multi-file pages never loaded.
- Document the /html/<name> route prefix in the man page.
- Cover serving, content type, and traversal rejection in test_mtc.py.
commit 2508c98f73a6f4798b2d27fe8a95aeb42c233574
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Sat Aug 22 12:30:25 2026 +1000
emc: cut the nml_intf dependency on tooldata
EMC_TOOL_STAT::operator= has no caller; deleting it builds the tree in
both the default and --enable-toolnml configurations, and its stated
reason, array members, never applied since implicit copy assignment
copies those anyway.
The default state of an entry moves next to the type as
CANON_TOOL_TABLE_INIT, so the constructor no longer borrows
tooldata_entry_init(). Default member initializers would read better but
make the struct non-POD, which clang rejects for tooldata_entry_init(),
declared extern "C" and returning it by value.
commit 6973b377a80b62ba601ef65b0046866f203f1743
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Sat Aug 22 12:04:53 2026 +1000
include-dep-report: bucket by what the build links, not by directory depth
The six libnml subdirectories are in SUBDIRS and each has an empty
Submakefile, present only to satisfy SUBMAKEFILES. Every source is listed
in libnml/Submakefile and links into one libnml.so, so the five-way cycle
the report showed between them was a directory layout, not a dependency.
Fold a subdirectory into its parent when the parent's Submakefile lists
its sources. emc/tp keeps its own bucket, the top-level Makefile builds it
into tpmod.
commit 793a04c1de7b4a8eea7250f5b8c31ed26cafff26
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Sat Aug 22 11:18:59 2026 +1000
gladevcp: fix velocity DRO row position on non-lathes
The lathe test guarding the insertion index in hal_gremlin's dro_format referenced the bound method instead of calling it, so it was always truthy and every machine got the lathe offset. On a mill the Vel row was inserted one slot too low, below the blank separator that precedes the G5x offset block, instead of directly under the axis rows. Lathe output is unchanged, since there the extra offset is what the inserted Rad/Dia row calls for.
commit 515e9dc772272f83fdcdc2c3daa4c03ace7f68d0
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Wed Aug 19 22:44:00 2026 +1000
posemath: retire pm_sincos
A two line wrapper around sin() and cos(), writing through pointers. Its
eleven call sites now call sin() and cos() directly, as both files already do
everywhere else. sincos.c and sincos.h go, with the nine module object lists
that named libposemath/sincos.o. $(MATHSTUB) stays on all nine.
-fno-builtin-sin, -cos and -sincos stay. They reach only the realtime compile
and are what stops the compiler folding an adjacent sin()/cos() pair back into
a sincos() libcall that realtime cannot resolve. Afterwards the realtime
_posemath.o still has U sin and U cos and no sincos.
commit 813da03e9e757a93597c2b4d1b81da61cd2fac5b
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Thu Aug 20 00:06:55 2026 +1000
tree: remove includes that nothing in the file uses
104 #include lines across 82 files, of 30 distinct in-tree headers. None of
them provides a name the including file mentions.
Found by taking the names each in-tree header declares, macros, typedefs,
tags, prototypes, extern variables and enum members, and checking whether any
of them appears in the file that includes it. A heuristic that size is going
to be wrong somewhere, so nothing here rests on it: every candidate was then
put to the compiler. 209 came out of the heuristic, all 209 were removed at
once and the tree built, the files that failed had their includes put back,
and this is what survived a build with all of them gone together. Configured
--with-realtime=uspace, no errors and no warnings.
That build does not cover everything. Five of the files are outside what a
uspace configuration compiles, so they were read by hand instead, and two of
them kept their include: rtai_ulapi.c needs rtapi_rtai_shm_wrap.h, which
declares nothing itself and only wraps rtai_shm.h, and fifousr.c takes
FIFO_KEY and FIFO_SIZE from an anonymous enum in its own common.h.
The ones that repeat are rtapi_math.h 21 times, rtapi_string.h 15, config.h
10, block.h 7, rtapi_slab.h and rtapi_mutex.h 6 each.
An include costs nothing to leave in place, which is why these accumulated,
but it is not free to a reader or to a dependency graph: each one asserts a
relationship between two directories that turns out not to exist.
commit fe00dfbd8c9c1ae70a001c533a9e40a44910efa2
Merge: 7a29eb2b d8c9d027
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Sat Aug 22 06:42:08 2026 +0800
Merge pull request #4442 from weblate/weblate-linuxcnc-linuxcnc
Translations update from Hosted Weblate
commit d8c9d02741925e5a66eeb1d253f57a8d3288ccc6
Author: xiezhihai <xiezhihai7321@outlook.com>
Date: Fri Aug 21 21:51:33 2026 +0200
Translated using Weblate (Chinese (Simplified Han script))
Currently translated at 88.5% (3434 of 3877 strings)
Co-authored-by: xiezhihai <xiezhihai7321@outlook.com>
Translate-URL: https://hosted.weblate.org/projects/linuxcnc/linuxcnc/zh_Hans/
Translation: LinuxCNC/LinuxCNC
commit 7a29eb2b930825c75cfd4d7698b37b9ea94a564c
Merge: 59b5219c eb0ef6f3
Author: BsAtHome <bertho@vagrearg.org>
Date: Fri Aug 21 17:56:26 2026 +0200
Merge pull request #4430 from grandixximo/classicladder-headers
classicladder: give the headers include guards and their own dependencies
commit 59b5219ccf5fe7e78048c8d8f33ba0b1cecd8bfe
Merge: 6df29fcd 1472affe
Author: BsAtHome <bertho@vagrearg.org>
Date: Fri Aug 21 17:56:06 2026 +0200
Merge pull request #4411 from grandixximo/posemath-split
posemath: split the header, move EmcPose, stop exporting gomath and sincos
commit 6df29fcdabee8b55d240d10f43324f30d33689e9
Merge: 15dd6482 de8c2ef4
Author: BsAtHome <bertho@vagrearg.org>
Date: Fri Aug 21 17:38:16 2026 +0200
Merge pull request #4439 from grandixximo/docs-raster-path
docs: fix the raster test path in hal_port(3)
commit de8c2ef46bf0c95097122081e0d1dc80c32d2f6a
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Sat Aug 22 00:42:42 2026 +1000
docs: fix the raster test path in hal_port(3)
The test program is at tests/raster, not src/tests/raster.
commit 1472affefe4c3bfce272d8334f831aba1f52f709
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Sat Aug 15 15:24:36 2026 +1000
posemath: stop exporting gomath, gotypes and sincos
The build copies gomath.h, gotypes.h and sincos.h into include/, which makes
them part of what LinuxCNC offers to code built against it. Nothing outside
libposemath needs them to be: gomath and gotypes are included by two files,
both part of genserkins, and sincos.h declares one function, a shim over
sin() and cos() that posemath itself calls.
Those users include them by path instead, which is what src/-relative quoted
includes are for, and the three headers come off the exported list. With the
split in place the installed pose math surface is posemath.h and the two
headers under it, plus emcpose.h, in one directory.
Porting genserkins and scorbot off gomath, so that the N-DOF matrix code can
move into posemath and gomath can go, is easier once the symbols are private.
scorbot is already off it: scorbot-kins.c includes gotypes.h and uses nothing
from it, so that include goes here.
gomath.h included rtapi_math.h with quotes, which was right while gomath.h
was itself exported and had to carry its siblings to include/. It is a user
now, so it takes angle brackets, and it reaches the standard headers through
rtapi_math.h rather than around it. gotypes.h wanted float.h for FLT_MAX and
DBL_MAX and gomath.h wanted stddef.h for NULL; rtapi_math.h includes float.h
and rtapi.h includes stddef.h, in both the kernel and the userspace branch.
commit 4206e03e641c939171ac88291662ee940c2b4cbb
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Sat Aug 15 15:23:18 2026 +1000
posemath: move EmcPose next to the pose math it is built from
EmcPose is a machine pose made of a PmCartesian and six more doubles, and
emcpose.c is arithmetic on it. Neither is an NML message, so neither belongs
in nml_intf. The split across two headers was historical as well: emcpos.h
held the type and emcpose.h the operations, and code that wanted the type
included the one that could not stand alone.
Fold both into src/libposemath/emcpose.h and move emcpose.c with it, into
libposemath rather than liblinuxcnc, which is the only in-tree caller anyway
by way of tpmod. emcpos.h stays where it is and includes the new header, so
the hundred and twenty odd files that include it are untouched and out of
tree code keeps compiling.
The declarations gain an extern "C" block. They had none, so a C++ caller
would have compiled and then failed to link; there is no such caller today.
libposemath.so.0 gains the fifteen emcPose entry points and liblinuxcnc.a
loses them. Nothing in userspace calls them.
commit 4015e8d36cefb09921f0f3abc8f76f8a12f9a474
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Mon Aug 17 00:09:45 2026 +1000
posemath: split the header by language
posemath.h declares two libraries in one file: a set of C++ classes with
their operators, and the C API that the real time side uses. The tree already
has a shape for that, in inifile.h and inifile.hh and in hal.h and hal.hh,
where the plain suffix is the C interface and the double one is the C++
interface, so follow it.
posemath.h keeps the C API and gains posemath_types.h, which holds the data
types and the constants. posemath.hh takes the classes, the operators and the
copy templates, and refuses to be compiled as C. posemath.h ends by including
posemath.hh under __cplusplus, so C++ code that includes posemath.h still
gets the classes and nothing out of tree changes. The two headers include
each other and the guards make either order safe.
What this buys is for C++ code: a file that wants no more than PmCartesian,
which is most of what reaches posemath through emcpos.h, can include
posemath_types.h and stop parsing four hundred lines of class declarations.
C compilers were never affected either way, since the classes have always sat
behind an ifdef.
Declaration text is moved verbatim, indentation included. The one edit is
PmAxis, which was an unnamed enum in C and a typedef of the C++ enum PM_AXIS
in C++; the types come first now, so the enum takes its tag and one
definition serves both languages.
Preprocessing posemath.h before and after, in C and in C++, gives the same
declarations in both languages, differing only in the order they appear and
in that PmAxis line. libposemath.so.0 exports the same 390 symbols.
commit 2146e12a2d07497010be208e7750cda25a0ca6b3
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Sat Aug 22 00:29:41 2026 +1000
tests: remove mathtest.c
Nothing builds it. src/tests has no Submakefile and is not in SUBDIRS,
so the file has never been part of any target; it only tested that a
2004-era kernel module linking libm came out with no unresolved symbols.
The concern it stood for is handled by the -fno-builtin-sin, -cos and
-sincos flags at src/Makefile:917 and by the realtime link itself.
It also defines its own isnan() over the bytes of a double, assuming
little-endian IEEE 754, and math_test() has no caller.
commit eb0ef6f3a67120744b5c5c820ca13ebf50e4d064
Author: Luca Toniolo <10792599+grandixximo@users.noreply.github.com>
Date: Fri Aug 21 10:28:02 2026 +1000
classicladder: give the headers include guards and their own dependencies
30 of the 34 headers in hal/classicladder have no include guard, and 12 do
not compile on their own. They name StrRung, StrSection, StrSymbol, StrStep,
cairo_t or the gtk types without including whatever declares them, and build
only because the file that included them had already got there.
Guards go in first, since including classicladder.h from twelve places
without them redefines everything. Then the twelve name what they use:
classicladder.h for the ladder types, sequential.h for StrStep and
StrTransition in drawing_sequential.h, <gtk/gtk.h> for the five _gtk headers,
<cairo.h> and <stddef.h> for drawing.h, and <stdio.h> for the FILE * in
files.h.
The guards are named CLASSICLADDER_<FILE>_H. The four headers here that had
one already used a leading underscore, which is reserved to the
implementation, so they are renamed to match rather than left as a second
convention in the same directory. Plain uppercase with no underscore is what
most of the tree uses; the prefix is because names like FILES_H, CALC_H and
GLOBAL_H are too general to leave unqualified.
All 34 compile standalone afterwards, one translation unit per header against
the userspace include path, where 22 did before. Full build clean, no errors
and no warnings.
The stdio.h line in files.h is also in #4425, which reaches it from the other
direction; the two overlap by that one line and nothing else.