You can subscribe to this list here.
| 2003 |
Jan
|
Feb
|
Mar
|
Apr
|
May
|
Jun
(12) |
Jul
(105) |
Aug
(245) |
Sep
(165) |
Oct
(100) |
Nov
(92) |
Dec
(74) |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 2004 |
Jan
(179) |
Feb
(233) |
Mar
(175) |
Apr
(168) |
May
(146) |
Jun
(165) |
Jul
(18) |
Aug
(95) |
Sep
(134) |
Oct
(120) |
Nov
(51) |
Dec
(65) |
| 2005 |
Jan
(96) |
Feb
(100) |
Mar
(113) |
Apr
(82) |
May
(281) |
Jun
(168) |
Jul
(54) |
Aug
(72) |
Sep
(104) |
Oct
(182) |
Nov
(126) |
Dec
(133) |
| 2006 |
Jan
(211) |
Feb
(252) |
Mar
(291) |
Apr
(199) |
May
(345) |
Jun
(282) |
Jul
(272) |
Aug
(261) |
Sep
(287) |
Oct
(464) |
Nov
(233) |
Dec
(210) |
| 2007 |
Jan
(669) |
Feb
(304) |
Mar
(483) |
Apr
(150) |
May
(293) |
Jun
(215) |
Jul
(178) |
Aug
(138) |
Sep
(159) |
Oct
(301) |
Nov
(367) |
Dec
(165) |
| 2008 |
Jan
(171) |
Feb
(148) |
Mar
(150) |
Apr
(180) |
May
(112) |
Jun
(109) |
Jul
(196) |
Aug
(319) |
Sep
(294) |
Oct
(284) |
Nov
(399) |
Dec
(280) |
| 2009 |
Jan
(536) |
Feb
(454) |
Mar
(382) |
Apr
(255) |
May
(321) |
Jun
(318) |
Jul
(412) |
Aug
(226) |
Sep
(76) |
Oct
(251) |
Nov
(134) |
Dec
(101) |
| 2010 |
Jan
(262) |
Feb
(210) |
Mar
(219) |
Apr
(55) |
May
(180) |
Jun
(225) |
Jul
(151) |
Aug
(184) |
Sep
(54) |
Oct
(160) |
Nov
(237) |
Dec
(115) |
| 2011 |
Jan
(141) |
Feb
(68) |
Mar
(204) |
Apr
(329) |
May
(68) |
Jun
(34) |
Jul
(304) |
Aug
(206) |
Sep
(183) |
Oct
(121) |
Nov
(1125) |
Dec
(934) |
| 2012 |
Jan
(466) |
Feb
(161) |
Mar
(314) |
Apr
(63) |
May
(62) |
Jun
(53) |
Jul
(47) |
Aug
(41) |
Sep
(36) |
Oct
(108) |
Nov
(297) |
Dec
(73) |
| 2013 |
Jan
(236) |
Feb
(81) |
Mar
(422) |
Apr
(441) |
May
(86) |
Jun
(177) |
Jul
(146) |
Aug
(140) |
Sep
(93) |
Oct
(126) |
Nov
(133) |
Dec
(230) |
| 2014 |
Jan
(380) |
Feb
(233) |
Mar
(251) |
Apr
(214) |
May
(168) |
Jun
(670) |
Jul
(538) |
Aug
(459) |
Sep
(330) |
Oct
(327) |
Nov
(339) |
Dec
(456) |
| 2015 |
Jan
(188) |
Feb
(426) |
Mar
(186) |
Apr
(71) |
May
(151) |
Jun
(283) |
Jul
(208) |
Aug
(477) |
Sep
(148) |
Oct
(302) |
Nov
(297) |
Dec
(331) |
| 2016 |
Jan
(474) |
Feb
(55) |
Mar
(92) |
Apr
(118) |
May
(286) |
Jun
(751) |
Jul
(494) |
Aug
(166) |
Sep
(97) |
Oct
(216) |
Nov
(41) |
Dec
(78) |
| 2017 |
Jan
(148) |
Feb
(205) |
Mar
(112) |
Apr
(119) |
May
(125) |
Jun
(102) |
Jul
(242) |
Aug
(26) |
Sep
(53) |
Oct
(28) |
Nov
(38) |
Dec
(97) |
| 2018 |
Jan
(71) |
Feb
(49) |
Mar
(43) |
Apr
(13) |
May
(19) |
Jun
(44) |
Jul
(74) |
Aug
(30) |
Sep
(44) |
Oct
(57) |
Nov
(74) |
Dec
(34) |
| 2019 |
Jan
(41) |
Feb
(50) |
Mar
(30) |
Apr
(24) |
May
(44) |
Jun
(101) |
Jul
(94) |
Aug
(123) |
Sep
(101) |
Oct
(81) |
Nov
(48) |
Dec
(51) |
| 2020 |
Jan
(74) |
Feb
(81) |
Mar
(129) |
Apr
(310) |
May
(176) |
Jun
(97) |
Jul
(137) |
Aug
(205) |
Sep
(84) |
Oct
(71) |
Nov
(106) |
Dec
(138) |
| 2021 |
Jan
(117) |
Feb
(94) |
Mar
(89) |
Apr
(71) |
May
(98) |
Jun
(99) |
Jul
(67) |
Aug
(129) |
Sep
(108) |
Oct
(127) |
Nov
(115) |
Dec
(114) |
| 2022 |
Jan
(115) |
Feb
(85) |
Mar
(97) |
Apr
(92) |
May
(102) |
Jun
(109) |
Jul
(168) |
Aug
(230) |
Sep
(183) |
Oct
(106) |
Nov
(109) |
Dec
(146) |
| 2023 |
Jan
(186) |
Feb
(126) |
Mar
(99) |
Apr
(92) |
May
(158) |
Jun
(74) |
Jul
(113) |
Aug
(93) |
Sep
(84) |
Oct
(163) |
Nov
(72) |
Dec
(81) |
| 2024 |
Jan
(71) |
Feb
(85) |
Mar
(63) |
Apr
(50) |
May
(45) |
Jun
(28) |
Jul
(106) |
Aug
(45) |
Sep
(60) |
Oct
(44) |
Nov
(53) |
Dec
(28) |
| 2025 |
Jan
(87) |
Feb
(58) |
Mar
(71) |
Apr
(37) |
May
(37) |
Jun
(46) |
Jul
(74) |
Aug
(26) |
Sep
(55) |
Oct
(43) |
Nov
(58) |
Dec
(34) |
| 2026 |
Jan
(106) |
Feb
(61) |
Mar
(48) |
Apr
(82) |
May
(78) |
Jun
(100) |
Jul
(96) |
Aug
(170) |
Sep
(123) |
Oct
(52) |
Nov
|
Dec
|
|
From: Luca T. <no...@gi...> - 2026-10-15 08:45:22
|
Branch: refs/heads/master Home: https://github.com/LinuxCNC/linuxcnc Commit: ad8aed4afb3ae567a91c30e257c9645617553d5a https://github.com/LinuxCNC/linuxcnc/commit/ad8aed4afb3ae567a91c30e257c9645617553d5a Author: yurc <yu...@gm...> Date: 2026-10-15 (Thu, 15 Oct 2026) Changed paths: M src/hal/hal_lib.c Log Message: ----------- hal: hal_strerror(): texts for -EALREADY and -EBUSY hal_init_funct_to_thread() and hal_del_init_funct_from_thread() return -EALREADY once the init cycle has run, and funct_entry_release() returns -EBUSY when a function is removed from a running thread in RTAPI. Callers that report errors through hal_strerror() got "unknown error" for both. Signed-off-by: yurc <yu...@gm...> Commit: c515a1b0bb8c3ae3b2ca32e4104912cea3333ac2 https://github.com/LinuxCNC/linuxcnc/commit/c515a1b0bb8c3ae3b2ca32e4104912cea3333ac2 Author: yurc <yu...@gm...> Date: 2026-10-15 (Thu, 15 Oct 2026) Changed paths: M src/hal/utils/halcmd_commands.cc Log Message: ----------- halcmd: unloadrt init entry error text from hal_strerror() The message used strerror() because hal_strerror() had no text for -EALREADY ("Operation already in progress" for an init cycle that has already run). Signed-off-by: yurc <yu...@gm...> Commit: 772d526e63ae710f1c2253c956096ae821c7a38d https://github.com/LinuxCNC/linuxcnc/commit/772d526e63ae710f1c2253c956096ae821c7a38d Author: yurc <yu...@gm...> Date: 2026-10-15 (Thu, 15 Oct 2026) Changed paths: M docs/src/man/man3/rtapi_delay.3.adoc M include/rtapi.h Log Message: ----------- rtapi: rtapi_delay() sleeps except in RTAI kernel modules rtapi.h and rtapi_delay(3) say it simply loops, wasting CPU cycles, and rtapi.h says user processes may not call it. Only RTAI kernel modules busy-wait (rt_busy_sleep()). uspace realtime modules sleep through the backend (clock_nanosleep() on POSIX and Xenomai, evl_sleep_until() on EVL, rt_sleep() on RTAI), and user processes have rtapi_delay() too and sleep with clock_nanosleep() (hal_lib uses it in ULAPI). Signed-off-by: yurc <yu...@gm...> Commit: 005609a05ec47d043c96b22978641fce99884e2b https://github.com/LinuxCNC/linuxcnc/commit/005609a05ec47d043c96b22978641fce99884e2b Author: yurc <yu...@gm...> Date: 2026-10-15 (Thu, 15 Oct 2026) Changed paths: M docs/src/man/man3/rtapi_delay.3.adoc Log Message: ----------- docs: rtapi_delay(3): discourage calls from realtime tasks Except in RTAI kernel modules rtapi_delay() sleeps, so a realtime task may wake up considerably later than requested and lose its timing. Keep init/cleanup code as the supported use. Signed-off-by: yurc <yu...@gm...> Commit: b26462f5fc4989aa70dedd7346cc4519f8178655 https://github.com/LinuxCNC/linuxcnc/commit/b26462f5fc4989aa70dedd7346cc4519f8178655 Author: yurc <yu...@gm...> Date: 2026-10-15 (Thu, 15 Oct 2026) Changed paths: M docs/src/man/man3/rtapi_delay.3.adoc M include/rtapi.h Log Message: ----------- docs: rtapi_delay_max(): the value is implementation dependent 1/4 of the clock period holds only for RTAI kernel modules (rtai_rtapi.c). uspace realtime modules return a fixed 10000 ns (uspace_rtapi_main.cc), user processes 999999999 ns (uspace_ulapi.c, rtai_ulapi.c). Signed-off-by: yurc <yu...@gm...> Commit: b99baf8e3904106a9feb719ab96076b6b296944e https://github.com/LinuxCNC/linuxcnc/commit/b99baf8e3904106a9feb719ab96076b6b296944e Author: Luca Toniolo <107...@us...> Date: 2026-10-15 (Thu, 15 Oct 2026) Changed paths: M docs/src/man/man3/rtapi_delay.3.adoc M include/rtapi.h M src/hal/hal_lib.c M src/hal/utils/halcmd_commands.cc Log Message: ----------- Merge pull request #4681 from SyncTwin/synctwin/hal-strerror-ealready hal: hal_strerror() texts for -EALREADY/-EBUSY; rtapi_delay() doc Compare: https://github.com/LinuxCNC/linuxcnc/compare/003caba72a92...b99baf8e3904 To unsubscribe from these emails, change your notification settings at https://github.com/LinuxCNC/linuxcnc/settings/notifications |
|
From: Luca T. <no...@gi...> - 2026-10-15 07:04:02
|
Branch: refs/heads/master Home: https://github.com/LinuxCNC/linuxcnc Commit: c8bb7d74e634e7ec0530510b5bd409e2a9ed8c86 https://github.com/LinuxCNC/linuxcnc/commit/c8bb7d74e634e7ec0530510b5bd409e2a9ed8c86 Author: Luca Toniolo <107...@us...> Date: 2026-10-12 (Mon, 12 Oct 2026) Changed paths: M tests/tool-frame/skip M tests/tool-frame/test.sh R tests/tool-frame/test_tool_frame.c A tests/tool-frame/toolframecheck.c Log Message: ----------- tests: tool-frame checks the helpers as a realtime component The test compiled kins_util.c into a userspace program with -DULAPI. Since kins_util.c exports its helpers for switchkins_core, EXPORT_SYMBOL is undefined there, which GCC 13 lets through as an implicit int and GCC 14 rejects, so the test failed to build on GCC 14. The checks now run in a component loaded after switchkins_core, which exports the helpers, the way tests/kins-jacobian checks the kinematics modules. A failed check fails the load. The checks themselves are unchanged. Reported by hdiethelm in #4670. Fixes #4670 Commit: 003caba72a92393f2175d3f7503bd0e9d6865b6c https://github.com/LinuxCNC/linuxcnc/commit/003caba72a92393f2175d3f7503bd0e9d6865b6c Author: Luca Toniolo <107...@us...> Date: 2026-10-15 (Thu, 15 Oct 2026) Changed paths: M tests/tool-frame/skip M tests/tool-frame/test.sh R tests/tool-frame/test_tool_frame.c A tests/tool-frame/toolframecheck.c Log Message: ----------- Merge pull request #4673 from grandixximo/tool-frame-checker tests: tool-frame checks the helpers as a realtime component Compare: https://github.com/LinuxCNC/linuxcnc/compare/c555f8584ac0...003caba72a92 To unsubscribe from these emails, change your notification settings at https://github.com/LinuxCNC/linuxcnc/settings/notifications |
|
From: Luca T. <no...@gi...> - 2026-10-15 02:17:20
|
Branch: refs/heads/master Home: https://github.com/LinuxCNC/linuxcnc Commit: 2774865951f0a95ef6cc65e47640c54abf5f80ee https://github.com/LinuxCNC/linuxcnc/commit/2774865951f0a95ef6cc65e47640c54abf5f80ee Author: Luca Toniolo <107...@us...> Date: 2026-10-15 (Thu, 15 Oct 2026) Changed paths: R .github/scripts/build-headers.sh M .github/workflows/ci.yml M debian/copyright M docs/src/code/code-notes.adoc M docs/src/config/core-components.adoc M docs/src/hal/tutorial.adoc M docs/src/man/man9/motion.9.adoc R include/.gitignore A include/axis_kinds.hh A include/emcmotcfg.h A include/emcpos.h A include/emcpose.h A include/hal.h A include/hostmot2-serial.h A include/inifile.h A include/inifile.hh A include/kinematics.h A include/linuxcnc.h A include/motion_types.h A include/posemath.h A include/posemath.hh A include/posemath_types.h A include/rtapi.h A include/rtapi_app.h A include/rtapi_atomic.h A include/rtapi_bitops.h A include/rtapi_bool.h A include/rtapi_byteorder.h A include/rtapi_ctype.h A include/rtapi_device.h A include/rtapi_errno.h A include/rtapi_firmware.h A include/rtapi_gfp.h A include/rtapi_io.h A include/rtapi_limits.h A include/rtapi_list.h A include/rtapi_math.h A include/rtapi_math64.h A include/rtapi_math_i386.h A include/rtapi_mutex.h A include/rtapi_parport.h A include/rtapi_pci.h A include/rtapi_slab.h A include/rtapi_stdint.h A include/rtapi_string.h A include/rtapi_vsnprintf.h A include/switchkins.h M lib/python/mtc/kinematics.py M src/Makefile M src/Submakefile.skel R src/emc/ini/axis_kinds.hh M src/emc/ini/inifile.cc R src/emc/ini/inifile.h R src/emc/ini/inifile.hh R src/emc/kinematics/kinematics.h M src/emc/kinematics/switchkins.c R src/emc/kinematics/switchkins.h M src/emc/kinematics/switchkins_main.c R src/emc/linuxcnc.h M src/emc/nml_intf/emc.cc M src/emc/nml_intf/emc.hh R src/emc/nml_intf/emcmotcfg.h R src/emc/nml_intf/emcpos.h R src/emc/nml_intf/motion_types.h R src/hal/drivers/mesa-hostmot2/hostmot2-serial.h M src/hal/drivers/mesa-hostmot2/pktuart.c R src/hal/hal.h M src/hal/hal_lib.c M src/hal/hal_lib_extra.c M src/hal/hal_lib_query.c M src/libposemath/_posemath.c M src/libposemath/emcpose.c R src/libposemath/emcpose.h M src/libposemath/posemath.cc R src/libposemath/posemath.h R src/libposemath/posemath.hh R src/libposemath/posemath_types.h M src/rtapi/mathstubs.c M src/rtapi/rtai_rtapi.c M src/rtapi/rtai_ulapi.c R src/rtapi/rtapi.h R src/rtapi/rtapi_app.h R src/rtapi/rtapi_atomic.h R src/rtapi/rtapi_bitops.h R src/rtapi/rtapi_bool.h R src/rtapi/rtapi_byteorder.h M src/rtapi/rtapi_common.h R src/rtapi/rtapi_ctype.h R src/rtapi/rtapi_device.h R src/rtapi/rtapi_errno.h R src/rtapi/rtapi_firmware.h R src/rtapi/rtapi_gfp.h R src/rtapi/rtapi_io.h R src/rtapi/rtapi_limits.h R src/rtapi/rtapi_list.h R src/rtapi/rtapi_math.h R src/rtapi/rtapi_math64.h R src/rtapi/rtapi_math_i386.h R src/rtapi/rtapi_mutex.h R src/rtapi/rtapi_parport.h R src/rtapi/rtapi_pci.h R src/rtapi/rtapi_slab.h R src/rtapi/rtapi_stdint.h R src/rtapi/rtapi_string.h R src/rtapi/rtapi_vsnprintf.h M src/rtapi/uspace_posix.cc M src/rtapi/uspace_rtai.cc M src/rtapi/uspace_rtapi_app.cc M src/rtapi/uspace_rtapi_app.hh M src/rtapi/uspace_rtapi_main.cc M src/rtapi/uspace_ulapi.c M src/rtapi/uspace_xenomai.cc M src/rtapi/uspace_xenomai_evl.cc M tcl/tklinuxcnc.tcl Log Message: ----------- include: keep the exported headers where they are used from The 39 headers listed in SRCHEADERS are the API an out-of-tree component may use. They were spread over eight source directories, mixed in with the private headers of the libraries publishing them, and the build copied them into ../include by basename so that an angled include would find them. That copy is what makes the rule in the comment above SRCHEADERS necessary: a source beside an exported header must include it quoted, because the copy is not the file its own directory should compile against, while every other source must include it angled. Which form is correct therefore depends on where the includer sits, and getting it wrong is silent, because the wrong file is found rather than no file. Keep them in ../include instead, where every compile in and out of the tree already looks for them. There is then one copy rather than two, nothing sits beside an exported header, and every source in the tree takes them angled. SRCHEADERS, the rule that did the copying and headersclean all go; the directory is the list, and installing it is a wildcard. 27 include sites in 24 files change from quoted to angled. The local hal.h in hal/user_comps/xhc-whb04b-6 is a different header of the same name and keeps its "./hal.h" form. Inside include/ the headers keep quoting each other, which is now simply a same-directory include. No code changes, no -I flag changes, and $(EMC2_HOME)/include keeps meaning what it meant. The cppcheck job ran "make headers" so that include/ was populated before checking; include/ is now populated in the checkout, so that step and its build-headers.sh script go too. Commit: f4448fc392a991ae6f0d377cc16cd1425fe4b862 https://github.com/LinuxCNC/linuxcnc/commit/f4448fc392a991ae6f0d377cc16cd1425fe4b862 Author: Luca Toniolo <107...@us...> Date: 2026-10-15 (Thu, 15 Oct 2026) Changed paths: M scripts/include-dep-report.py Log Message: ----------- include-dep-report: take the exported set from the include directory SRCHEADERS is gone, so read the directory instead. It is the better source anyway: the list cannot drift from what is installed when the directory is the list. The headers are scanned along with the sources so their own includes still count, they bucket as "include", and paths print relative to the tree root rather than to src, which the exported headers now sit beside rather than under. The "no in-tree user outside their own directory" section had its meaning taken away by the move, since no source shares a directory with an exported header any more. It now reports the headers with at most two in-tree users, which is the question that section was really asking. Commit: 2d7d09ac7ae2cfcdb9427cfc89a2b6cb07b98dc4 https://github.com/LinuxCNC/linuxcnc/commit/2d7d09ac7ae2cfcdb9427cfc89a2b6cb07b98dc4 Author: Luca Toniolo <107...@us...> Date: 2026-10-15 (Thu, 15 Oct 2026) Changed paths: R include/rtapi_vsnprintf.h M src/rtapi/rtai_rtapi.c A src/rtapi/rtapi_vsnprintf.h A tests/rtapi_printf.0/skip M tests/rtapi_printf.0/test.sh Log Message: ----------- rtapi: stop exporting the vsnprintf implementation rtapi_vsnprintf.h is not an interface, and the only code that includes it is rtai_rtapi.c beside it and the unit test. The documented entry point, rtapi_vsnprintf(), is declared in rtapi.h and stays exported, so nothing an out-of-tree component may legitimately call moves. The header goes to rtapi/ and rtai_rtapi.c takes it from its own directory. The three exported headers it pulls in go angled, since they are no longer beside it. tests/rtapi_printf.0 compiles the header, so it now needs the source tree and is skipped on installed packages, the same way tests/blendmath already is. Commit: c555f8584ac06a305b99934ac71adde55eedae6b https://github.com/LinuxCNC/linuxcnc/commit/c555f8584ac06a305b99934ac71adde55eedae6b Author: Luca Toniolo <107...@us...> Date: 2026-10-15 (Thu, 15 Oct 2026) Changed paths: R .github/scripts/build-headers.sh M .github/workflows/ci.yml M debian/copyright M docs/src/code/code-notes.adoc M docs/src/config/core-components.adoc M docs/src/hal/tutorial.adoc M docs/src/man/man9/motion.9.adoc R include/.gitignore A include/axis_kinds.hh A include/emcmotcfg.h A include/emcpos.h A include/emcpose.h A include/hal.h A include/hostmot2-serial.h A include/inifile.h A include/inifile.hh A include/kinematics.h A include/linuxcnc.h A include/motion_types.h A include/posemath.h A include/posemath.hh A include/posemath_types.h A include/rtapi.h A include/rtapi_app.h A include/rtapi_atomic.h A include/rtapi_bitops.h A include/rtapi_bool.h A include/rtapi_byteorder.h A include/rtapi_ctype.h A include/rtapi_device.h A include/rtapi_errno.h A include/rtapi_firmware.h A include/rtapi_gfp.h A include/rtapi_io.h A include/rtapi_limits.h A include/rtapi_list.h A include/rtapi_math.h A include/rtapi_math64.h A include/rtapi_math_i386.h A include/rtapi_mutex.h A include/rtapi_parport.h A include/rtapi_pci.h A include/rtapi_slab.h A include/rtapi_stdint.h A include/rtapi_string.h A include/switchkins.h M lib/python/mtc/kinematics.py M scripts/include-dep-report.py M src/Makefile M src/Submakefile.skel R src/emc/ini/axis_kinds.hh M src/emc/ini/inifile.cc R src/emc/ini/inifile.h R src/emc/ini/inifile.hh R src/emc/kinematics/kinematics.h M src/emc/kinematics/switchkins.c R src/emc/kinematics/switchkins.h M src/emc/kinematics/switchkins_main.c R src/emc/linuxcnc.h M src/emc/nml_intf/emc.cc M src/emc/nml_intf/emc.hh R src/emc/nml_intf/emcmotcfg.h R src/emc/nml_intf/emcpos.h R src/emc/nml_intf/motion_types.h R src/hal/drivers/mesa-hostmot2/hostmot2-serial.h M src/hal/drivers/mesa-hostmot2/pktuart.c R src/hal/hal.h M src/hal/hal_lib.c M src/hal/hal_lib_extra.c M src/hal/hal_lib_query.c M src/libposemath/_posemath.c M src/libposemath/emcpose.c R src/libposemath/emcpose.h M src/libposemath/posemath.cc R src/libposemath/posemath.h R src/libposemath/posemath.hh R src/libposemath/posemath_types.h M src/rtapi/mathstubs.c M src/rtapi/rtai_rtapi.c M src/rtapi/rtai_ulapi.c R src/rtapi/rtapi.h R src/rtapi/rtapi_app.h R src/rtapi/rtapi_atomic.h R src/rtapi/rtapi_bitops.h R src/rtapi/rtapi_bool.h R src/rtapi/rtapi_byteorder.h M src/rtapi/rtapi_common.h R src/rtapi/rtapi_ctype.h R src/rtapi/rtapi_device.h R src/rtapi/rtapi_errno.h R src/rtapi/rtapi_firmware.h R src/rtapi/rtapi_gfp.h R src/rtapi/rtapi_io.h R src/rtapi/rtapi_limits.h R src/rtapi/rtapi_list.h R src/rtapi/rtapi_math.h R src/rtapi/rtapi_math64.h R src/rtapi/rtapi_math_i386.h R src/rtapi/rtapi_mutex.h R src/rtapi/rtapi_parport.h R src/rtapi/rtapi_pci.h R src/rtapi/rtapi_slab.h R src/rtapi/rtapi_stdint.h R src/rtapi/rtapi_string.h M src/rtapi/rtapi_vsnprintf.h M src/rtapi/uspace_posix.cc M src/rtapi/uspace_rtai.cc M src/rtapi/uspace_rtapi_app.cc M src/rtapi/uspace_rtapi_app.hh M src/rtapi/uspace_rtapi_main.cc M src/rtapi/uspace_ulapi.c M src/rtapi/uspace_xenomai.cc M src/rtapi/uspace_xenomai_evl.cc M tcl/tklinuxcnc.tcl A tests/rtapi_printf.0/skip M tests/rtapi_printf.0/test.sh Log Message: ----------- Merge pull request #4461 from grandixximo/exported-headers-dir include: move the exported headers into a directory of their own Compare: https://github.com/LinuxCNC/linuxcnc/compare/eab772695b56...c555f8584ac0 To unsubscribe from these emails, change your notification settings at https://github.com/LinuxCNC/linuxcnc/settings/notifications |
|
From: BsAtHome <no...@gi...> - 2026-10-14 13:24:48
|
Branch: refs/heads/master Home: https://github.com/LinuxCNC/linuxcnc Commit: a950fb55e85680cd5208297c7da991963b0e400f https://github.com/LinuxCNC/linuxcnc/commit/a950fb55e85680cd5208297c7da991963b0e400f Author: Hannes Diethelm <han...@gm...> Date: 2026-10-10 (Sat, 10 Oct 2026) Changed paths: A .github/scripts/build-headers.sh M .github/workflows/ci.yml M src/hal/classicladder/classicladder_gtk.c M src/hal/classicladder/drawing.c M src/hal/classicladder/vars_names.c Log Message: ----------- cppcheck fixes for ubuntu-26.04 Replace #ifdef AAAAA with #if 0 so cppcheck does not check unused code. "make headers" before cppckeck, so include is populated. Commit: eab772695b56d22d037dad800ad2b925b615835f https://github.com/LinuxCNC/linuxcnc/commit/eab772695b56d22d037dad800ad2b925b615835f Author: BsAtHome <be...@va...> Date: 2026-10-14 (Wed, 14 Oct 2026) Changed paths: A .github/scripts/build-headers.sh M .github/workflows/ci.yml M src/hal/classicladder/classicladder_gtk.c M src/hal/classicladder/drawing.c M src/hal/classicladder/vars_names.c Log Message: ----------- Merge pull request #4664 from hdiethelm/cppcheck_ubuntu_26.04 cppcheck fixes for ubuntu-26.04 Compare: https://github.com/LinuxCNC/linuxcnc/compare/f6eea6847fe4...eab772695b56 To unsubscribe from these emails, change your notification settings at https://github.com/LinuxCNC/linuxcnc/settings/notifications |
|
From: Luca T. <no...@gi...> - 2026-10-14 12:02:28
|
Branch: refs/heads/master Home: https://github.com/LinuxCNC/linuxcnc Commit: f6ff60787b8cd88133b8b96143894e16e20c5e66 https://github.com/LinuxCNC/linuxcnc/commit/f6ff60787b8cd88133b8b96143894e16e20c5e66 Author: Luca Toniolo <107...@us...> Date: 2026-10-14 (Wed, 14 Oct 2026) Changed paths: M src/emc/rs274ngc/gcode_renderer.cc M src/emc/rs274ngc/gcode_renderer.hh M tests/glcanon/test_workplane.py Log Message: ----------- preview: a cut from where left-out traverses went counts toward the plane After G43 or a tool change the preview leaves out the traverses before the first feed, as it always has, and those traverses never reached the plane in effect either. A plane whose first cut starts from them recorded only the cut's end: Sigma1912's program, G68.2, G53.1, G0 X0 Y0 Z50, G0 Z0, G1 X600, drew the first plane small at X 600 instead of over the cut from X 0 to 600. A traverse left out under a plane now marks the point it reached, and a cut drawn from that point counts its start toward the plane. Only then: counting every left-out traverse would take in the end of a G53.1 orientation move, where the tool stood before the plane, and counting every cut's start would take in a cut that begins before the plane is set. tests/glcanon/test_workplane.py checks a cut after G43.1 drawn from where the traverses went. Reported by Sigma1912. Commit: f6eea6847fe42f70ef877cd6d0216187bf678e10 https://github.com/LinuxCNC/linuxcnc/commit/f6eea6847fe42f70ef877cd6d0216187bf678e10 Author: Luca Toniolo <107...@us...> Date: 2026-10-14 (Wed, 14 Oct 2026) Changed paths: M src/emc/rs274ngc/gcode_renderer.cc M src/emc/rs274ngc/gcode_renderer.hh M tests/glcanon/test_workplane.py Log Message: ----------- Merge pull request #4679 from grandixximo/preview-plane-cut preview: a cut from where left-out traverses went counts toward the plane Compare: https://github.com/LinuxCNC/linuxcnc/compare/b36e0d1822ec...f6eea6847fe4 To unsubscribe from these emails, change your notification settings at https://github.com/LinuxCNC/linuxcnc/settings/notifications |
|
From: Luca T. <no...@gi...> - 2026-10-14 09:41:02
|
Branch: refs/heads/master Home: https://github.com/LinuxCNC/linuxcnc Commit: 6bbfa032027ca0dc9cb1252290d5ddc2a3e8e4cf https://github.com/LinuxCNC/linuxcnc/commit/6bbfa032027ca0dc9cb1252290d5ddc2a3e8e4cf Author: yurc <yu...@gm...> Date: 2026-10-04 (Sun, 04 Oct 2026) Changed paths: A tests/hal-delf-live/README A tests/hal-delf-live/beat-check.sh A tests/hal-delf-live/checkresult A tests/hal-delf-live/control A tests/hal-delf-live/delfvictim.comp A tests/hal-delf-live/test.sh Log Message: ----------- tests: delf/unloadrt of a function in a running thread Repeatedly loadrt -> addf -> delf -> unloadrt a component whose function busy-waits 20 us in a 100 us thread that keeps running. DELF_ITER (default 200) sets the number of cycles. Commit: 23f54b89bc4d907d3029c24ce3d187785d6e0331 https://github.com/LinuxCNC/linuxcnc/commit/23f54b89bc4d907d3029c24ce3d187785d6e0331 Author: yurc <yu...@gm...> Date: 2026-10-04 (Sun, 04 Oct 2026) Changed paths: M src/hal/hal_lib.c Log Message: ----------- hal: don't recycle a funct entry the running thread may still use The realtime thread walks its funct_list without the HAL mutex. hal_del_funct_from_thread() and free_funct_struct() (unloadrt) unlinked the entry with list_remove_entry(), which points the entry's links at itself, and returned it to the free list at once. A thread standing on the entry then loops on it or follows a recycled link, and the following unloadrt dlclose()s code the thread may still run: rtapi_app dies or the thread hangs. Unlink the entry keeping its own links, then wait until the thread has completed two more passes (beatcnt, published with a release store) before the entry is freed. If the thread does not complete a pass within 1000 periods the entry is leaked and delf returns -ETIMEDOUT. Commit: 6af8e3b6da7fef694c7d55371d66338f9122bfd9 https://github.com/LinuxCNC/linuxcnc/commit/6af8e3b6da7fef694c7d55371d66338f9122bfd9 Author: yurc <yu...@gm...> Date: 2026-10-04 (Sun, 04 Oct 2026) Changed paths: M tests/hal-delf-live/test.sh Log Message: ----------- tests: hal-delf-live: fix shellcheck SC2034 (unused loop variable) Commit: 61c51433f546e3c2432fe4d4d1bc5d2ce6ab5475 https://github.com/LinuxCNC/linuxcnc/commit/61c51433f546e3c2432fe4d4d1bc5d2ce6ab5475 Author: yurc <yu...@gm...> Date: 2026-10-05 (Mon, 05 Oct 2026) Changed paths: M src/hal/hal_lib.c Log Message: ----------- hal: wait for quiescence on the threadbeat pin Leave beatcnt alone and read the thread's threadbeat pin with hal_get_sint(). The pin reference is only valid in the context that created the thread, so it is mapped through the owner's shmem base, as unlink_pin() does. Read threadbeat, then while threads are running delay two periods (one period on later rounds) and stop once threadbeat advanced by two. No timeout and no leak path: stopping the threads ends the wait. Commit: 4fd86137c3740ba2c94ee4ca950da1639a2f0966 https://github.com/LinuxCNC/linuxcnc/commit/4fd86137c3740ba2c94ee4ca950da1639a2f0966 Author: yurc <yu...@gm...> Date: 2026-10-05 (Mon, 05 Oct 2026) Changed paths: M tests/hal-delf-live/README M tests/hal-delf-live/beat-check.sh R tests/hal-delf-live/control M tests/hal-delf-live/test.sh Log Message: ----------- tests: hal-delf-live: no sudo, wait for threadbeat instead of sleeping Run halcompile without sudo and drop the sudo restriction. beat-check.sh waits until threadbeat advanced by two instead of comparing two reads 0.1 s apart; a stuck thread is caught by the timeout in test.sh. Commit: 85a3ac512b5ab8b517fd5cfd55b7819cadcfb61f https://github.com/LinuxCNC/linuxcnc/commit/85a3ac512b5ab8b517fd5cfd55b7819cadcfb61f Author: yurc <yu...@gm...> Date: 2026-10-05 (Mon, 05 Oct 2026) Changed paths: A tests/hal-delf-live/control M tests/hal-delf-live/delfvictim.comp M tests/hal-delf-live/test.sh Log Message: ----------- tests: hal-delf-live: restore sudo restriction, bit -> bool package-arch installs test components into the system rtlib and needs root, same as tests/realtime-math, tests/symbols.0/.1 and tests/rtapi-shmem: ${SUDO} halcompile --install plus a control file with Restrictions: sudo. runtests only exports SUDO=sudo for system builds (scripts/runtests.in), so RIP still runs this test without sudo. Also update delfvictim.comp's dummy pin from bit to bool, matching the rest of the tree after the bit->bool rename. Commit: 005e951ef4457b409e78b992eb1c24d860e81482 https://github.com/LinuxCNC/linuxcnc/commit/005e951ef4457b409e78b992eb1c24d860e81482 Author: yurc <yu...@gm...> Date: 2026-10-06 (Tue, 06 Oct 2026) Changed paths: R tests/hal-delf-live/control A tests/hal-delf-live/skip M tests/hal-delf-live/test.sh Log Message: ----------- tests: hal-delf-live: skip on installed packages instead of sudo Follow the convention for new tests: no sudo anywhere. test.sh runs plain 'halcompile --install' (RIP tree), the control file with 'Restrictions: sudo' is dropped, and an executable skip file (as in tests/kins-frames) skips the test when SYSTEM_BUILD is set, so package-arch never touches /usr/lib/linuxcnc/modules. Commit: d36ff694c31c4c4bc68c64e6c6533019ced860fa https://github.com/LinuxCNC/linuxcnc/commit/d36ff694c31c4c4bc68c64e6c6533019ced860fa Author: yurc <yu...@gm...> Date: 2026-10-06 (Tue, 06 Oct 2026) Changed paths: M src/hal/hal_lib.c Log Message: ----------- hal: look up the threadbeat pin by name in thread_wait_quiescent() thread->threadbeat is only valid in the context that created the thread, and delf reaches the wait from halcmd. Instead of rebasing the pointer through the owner's shmem_base, find '<thread>.threadbeat' by name and resolve it (signal or dummysig) in the current context, as hal_getref_p() does. hal_getref_p() itself is ULAPI only, while unloadrt reaches the wait from RTAPI through free_funct_struct(). Also indent the added code with spaces only. Commit: e1a8c562fa0c0150009f35040cfb2f4832ae09b1 https://github.com/LinuxCNC/linuxcnc/commit/e1a8c562fa0c0150009f35040cfb2f4832ae09b1 Author: yurc <yu...@gm...> Date: 2026-10-06 (Tue, 06 Oct 2026) Changed paths: M tests/hal-delf-live/README R tests/hal-delf-live/beat-check.sh A tests/hal-delf-live/delftest.hal A tests/hal-delf-live/delftest.py M tests/hal-delf-live/delfvictim.comp M tests/hal-delf-live/test.sh Log Message: ----------- tests: hal-delf-live: deterministic delf/unloadrt race test Replace the probabilistic loop with a test that holds the thread inside the function: delfvictim spins while its hold pin is set. delftest.py then runs 'delf' and 'unloadrt' from another process and fails if either returns while the thread is still inside, if it fails after the thread is released, or if the thread stops advancing threadbeat. While delf/unloadrt waits it holds the HAL mutex, so the script drives the victim through its own component pins, which need no mutex. threadbeat is read with hal.get_p() in Python (no 32-bit wrap); a stopped thread ends in the timeout. beat-check.sh is removed. Commit: 2fcb0d4e6e5a34514a9db4b85769bc62873dfe2d https://github.com/LinuxCNC/linuxcnc/commit/2fcb0d4e6e5a34514a9db4b85769bc62873dfe2d Author: yurc <yu...@gm...> Date: 2026-10-06 (Tue, 06 Oct 2026) Changed paths: M src/hal/hal_lib.c Log Message: ----------- hal: wait for a removed funct entry only in ULAPI (delf), with a timeout rtapi_delay() must not be used to wait in RTAPI code, and unloadrt reaches free_funct_struct() from RTAPI. Only delf (ULAPI) now waits for the thread to leave the unlinked entry, at most 1000 thread periods; on timeout delf fails with -ETIMEDOUT and the entry is not recycled. In RTAPI, an entry removed from a running thread is not recycled and an error asks to stop the threads or delf the function before unloading. The threadbeat pin is looked up with hal_getref_p(), a missing pin is reported as an error. Commit: 2b760c35f97b73ba09763ba034f1c88bfa4c1561 https://github.com/LinuxCNC/linuxcnc/commit/2b760c35f97b73ba09763ba034f1c88bfa4c1561 Author: yurc <yu...@gm...> Date: 2026-10-06 (Tue, 06 Oct 2026) Changed paths: M tests/hal-delf-live/README M tests/hal-delf-live/delftest.py M tests/hal-delf-live/delfvictim.comp Log Message: ----------- tests: hal-delf-live: no component, no nets, no wall-clock timeouts The test uses hal.set_p()/hal.get_p() on the victim's pins. The victim holds the thread for 500 periods by itself, so nothing has to be written while delf holds the HAL mutex. After delf returns, v.inside must be false. The only time limit is the one in test.sh. Commit: 68d4ea10886a6347790fd8e8e90ef324860ad0bf https://github.com/LinuxCNC/linuxcnc/commit/68d4ea10886a6347790fd8e8e90ef324860ad0bf Author: yurc <yu...@gm...> Date: 2026-10-06 (Tue, 06 Oct 2026) Changed paths: M src/hal/hal_lib.c Log Message: ----------- hal: funct_entry_unlink() comment names funct_entry_release() Commit: cb300d33d2c173dc76616b3580163a2327c43859 https://github.com/LinuxCNC/linuxcnc/commit/cb300d33d2c173dc76616b3580163a2327c43859 Author: yurc <yu...@gm...> Date: 2026-10-06 (Tue, 06 Oct 2026) Changed paths: M tests/hal-delf-live/README Log Message: ----------- tests: hal-delf-live: README describes delf waiting, unloadrt not Commit: 32a602d1a3871dc7a3ff7edcbab4ec7e47a9aec7 https://github.com/LinuxCNC/linuxcnc/commit/32a602d1a3871dc7a3ff7edcbab4ec7e47a9aec7 Author: yurc <yu...@gm...> Date: 2026-10-07 (Wed, 07 Oct 2026) Changed paths: M src/hal/hal.h M src/hal/hal_lib.c M src/hal/utils/halcmd_commands.cc M tests/hal-delf-live/README M tests/hal-delf-live/delftest.py Log Message: ----------- hal: refuse unloadrt while a function of the component is in a running thread hal_comp_check_unload() checks, under the HAL mutex, whether a function of the component is in a thread while the threads run. halcmd unloadrt calls it before unloading and fails with -EBUSY; hal_lib names the functions. The check has to come before the unload: rtapi_app_exit() is void and rtapi_app dlclose()s the module whatever hal_exit() returns. delf still waits for the thread to leave the removed entry: unlinking does not stop a thread that is already on the entry, and the function's user count only drops once the entry is released. Also: the edited lines keep the indentation of the lines they replace, and the missing threadbeat pin message prints the error code. tests/hal-delf-live: unloadrt must fail before delf and work after it; stop, unloadrt, start works as before; every wait aborts after 10 s. Commit: 0b36e486199ea06a16c165e2ea13c918d9663259 https://github.com/LinuxCNC/linuxcnc/commit/0b36e486199ea06a16c165e2ea13c918d9663259 Author: yurc <yu...@gm...> Date: 2026-10-07 (Wed, 07 Oct 2026) Changed paths: M src/hal/utils/halcmd_commands.cc Log Message: ----------- halcmd: unloadrt refusal message without hal_strerror (it has no text for -EBUSY) Commit: 5fdeffe077298e3e4ca78752ff8eea83cf6f4c2e https://github.com/LinuxCNC/linuxcnc/commit/5fdeffe077298e3e4ca78752ff8eea83cf6f4c2e Author: yurc <yu...@gm...> Date: 2026-10-09 (Fri, 09 Oct 2026) Changed paths: M src/hal/hal.h M src/hal/hal_lib.c M src/hal/utils/halcmd_commands.cc M tests/hal-delf-live/README M tests/hal-delf-live/delftest.py Log Message: ----------- halcmd: unloadrt delfs the component's functions instead of a hal_lib check hal_comp_check_unload() is removed. halcmd finds the component's functions with hal_list_funct() and their threads with hal_list_thread() (HAL_QTYPE_THREAD_FUNCT) and delfs each entry before unloading, so unloadrt waits for a running thread like delf does and does not unload when a delf fails. Init entries are left to the unload. With the config locked, unloadrt works as before. The test now runs unloadrt without delf while the thread is held inside the function. Commit: 985d03feafac7062e6122a80031a32bccb7d8603 https://github.com/LinuxCNC/linuxcnc/commit/985d03feafac7062e6122a80031a32bccb7d8603 Author: yurc <yu...@gm...> Date: 2026-10-09 (Fri, 09 Oct 2026) Changed paths: M src/hal/utils/halcmd_commands.cc Log Message: ----------- halcmd: unloadrt_delf() messages in the style of the other list errors The error messages drop the function-name prefix, like the message of do_unloadrt_cmd() for hal_list_comp(). The comment says that the entries removed before a failed delf stay removed. Commit: 9d639ea00652872e1659c2094c0fb0c9cb4174f9 https://github.com/LinuxCNC/linuxcnc/commit/9d639ea00652872e1659c2094c0fb0c9cb4174f9 Author: yurc <yu...@gm...> Date: 2026-10-10 (Sat, 10 Oct 2026) Changed paths: M src/hal/hal.h M src/hal/hal_lib.c M src/hal/utils/halcmd_commands.cc M tests/hal-delf-live/README M tests/hal-delf-live/delftest.hal Log Message: ----------- halcmd: unloadrt removes the component's init entries first, one query record hal_del_init_funct_from_thread() removes one entry of a function from a thread's init list. The realtime thread walks and drains that list without the mutex once the threads run, so it is changed only while the threads are stopped and the init cycle has not run; otherwise it returns -EBUSY. unloadrt_delf() collects the init entries and the cyclic entries of the component in two vectors and removes the init entries first. If that fails, the threads were started meanwhile and the component is not unloaded. One HalQRec is reused for both queries with clear(). delftest.hal unloads a component with an init entry before start. Commit: f1c6bbd4a51cbcc4000b6314cedf5a0cccc5e13f https://github.com/LinuxCNC/linuxcnc/commit/f1c6bbd4a51cbcc4000b6314cedf5a0cccc5e13f Author: yurc <yu...@gm...> Date: 2026-10-10 (Sat, 10 Oct 2026) Changed paths: M docs/src/hal/components.adoc M docs/src/man/man3/hal_init_funct_to_thread.3.adoc M src/hal/hal_lib.c Log Message: ----------- hal: document hal_del_init_funct_from_thread(), -ENOENT like its counterpart The new function is described on the hal_init_funct_to_thread(3) page, the way hal_del_funct_from_thread() shares the hal_add_funct_to_thread(3) page, and is listed in components.adoc. A function or thread that does not exist returns -ENOENT, as in hal_init_funct_to_thread(), so the return values on the shared page hold for both. Commit: cde9d4ee0165b3b019c338d77ced666048c90c7d https://github.com/LinuxCNC/linuxcnc/commit/cde9d4ee0165b3b019c338d77ced666048c90c7d Author: yurc <yu...@gm...> Date: 2026-10-10 (Sat, 10 Oct 2026) Changed paths: M tests/hal-delf-live/README M tests/hal-delf-live/delfvictim.comp Log Message: ----------- tests/hal-delf-live: the victim sleeps inside its function delfvictim held the thread inside its function for 500 periods in a busy loop. When delftest.py and halcmd ran on the CPU of the realtime thread (no isolcpus, RTAPI_CPU_NUMBER on a shared CPU), they did not run during the hold: v.inside was never seen and the test failed with "no progress in 10 s", and delf could not run while the thread was inside. The function now waits in rtapi_delay(), which sleeps in uspace, so the CPU is free while the thread is inside and delf runs during the hold in every CPU layout. Without the wait in delf the test still fails ("delf returned while the thread was inside v"), now also when all processes share one CPU. Commit: 738c4efbcebcb9f53ef86a560048ec0bcd6fa8a9 https://github.com/LinuxCNC/linuxcnc/commit/738c4efbcebcb9f53ef86a560048ec0bcd6fa8a9 Author: yurc <yu...@gm...> Date: 2026-10-10 (Sat, 10 Oct 2026) Changed paths: M docs/src/man/man3/hal_init_funct_to_thread.3.adoc M src/hal/hal.h M src/hal/hal_lib.c Log Message: ----------- hal: hal_del_init_funct_from_thread() returns -EALREADY like its counterpart Commit: 04cd92b0d1ee5027dc9b1b3e3bdc78c061a943e3 https://github.com/LinuxCNC/linuxcnc/commit/04cd92b0d1ee5027dc9b1b3e3bdc78c061a943e3 Author: yurc <yu...@gm...> Date: 2026-10-10 (Sat, 10 Oct 2026) Changed paths: M src/hal/utils/halcmd_commands.cc Log Message: ----------- halcmd: unloadrt names the error when an init entry is not removed Commit: f6eadeb2941b6d27b8c27f690ceb471bb3b48352 https://github.com/LinuxCNC/linuxcnc/commit/f6eadeb2941b6d27b8c27f690ceb471bb3b48352 Author: yurc <yu...@gm...> Date: 2026-10-10 (Sat, 10 Oct 2026) Changed paths: M src/hal/hal_lib.c Log Message: ----------- hal: quote the function name in the hal_del_init_funct_from_thread() error Commit: b36e0d1822ec32fc167ad2c77abb94a00203d609 https://github.com/LinuxCNC/linuxcnc/commit/b36e0d1822ec32fc167ad2c77abb94a00203d609 Author: Luca Toniolo <107...@us...> Date: 2026-10-14 (Wed, 14 Oct 2026) Changed paths: M docs/src/hal/components.adoc M docs/src/man/man3/hal_init_funct_to_thread.3.adoc M src/hal/hal.h M src/hal/hal_lib.c M src/hal/utils/halcmd_commands.cc A tests/hal-delf-live/README A tests/hal-delf-live/checkresult A tests/hal-delf-live/delftest.hal A tests/hal-delf-live/delftest.py A tests/hal-delf-live/delfvictim.comp A tests/hal-delf-live/skip A tests/hal-delf-live/test.sh Log Message: ----------- Merge pull request #4630 from SyncTwin/synctwin/hal-delf-quiescence-master hal: don't free a funct entry the running thread may still use (delf/unloadrt crash) Compare: https://github.com/LinuxCNC/linuxcnc/compare/912313954ee1...b36e0d1822ec To unsubscribe from these emails, change your notification settings at https://github.com/LinuxCNC/linuxcnc/settings/notifications |
|
From: BsAtHome <no...@gi...> - 2026-10-14 08:10:52
|
Branch: refs/heads/master Home: https://github.com/LinuxCNC/linuxcnc Commit: 5a1776f832141dca919f8732ee052d315dbdb131 https://github.com/LinuxCNC/linuxcnc/commit/5a1776f832141dca919f8732ee052d315dbdb131 Author: Luca Toniolo <107...@us...> Date: 2026-10-14 (Wed, 14 Oct 2026) Changed paths: M src/hal/components/histobinstream.comp M src/hal/components/latencybinstream.comp M src/hal/hal_lib.c M tests/halmodule/stream/stream_reader.py M tests/halmodule/stream/stream_writer.py Log Message: ----------- hal: a stream of depth N holds N samples The ring keeps one slot free to tell full from empty, so a stream created with depth N took only N-1 samples. Allocate N+1 slots and keep reporting N as maxdepth. Drop the +1 that histobinstream and latencybinstream added for it, and fill the halmodule stream test to 10. Found by Bertho Stultiens in #4674. Commit: 912313954ee13070c3a97075bc1434648f89351f https://github.com/LinuxCNC/linuxcnc/commit/912313954ee13070c3a97075bc1434648f89351f Author: BsAtHome <be...@va...> Date: 2026-10-14 (Wed, 14 Oct 2026) Changed paths: M src/hal/components/histobinstream.comp M src/hal/components/latencybinstream.comp M src/hal/hal_lib.c M tests/halmodule/stream/stream_reader.py M tests/halmodule/stream/stream_writer.py Log Message: ----------- Merge pull request #4678 from grandixximo/hal-stream-depth hal: a stream of depth N holds N samples Compare: https://github.com/LinuxCNC/linuxcnc/compare/2655e62fe6aa...912313954ee1 To unsubscribe from these emails, change your notification settings at https://github.com/LinuxCNC/linuxcnc/settings/notifications |
|
From: Luca T. <no...@gi...> - 2026-10-12 01:24:06
|
Branch: refs/heads/master Home: https://github.com/LinuxCNC/linuxcnc Commit: 9ed4ebcf8236a101f61f5a7efd3c12e0620ed731 https://github.com/LinuxCNC/linuxcnc/commit/9ed4ebcf8236a101f61f5a7efd3c12e0620ed731 Author: Luca Toniolo <107...@us...> Date: 2026-10-11 (Sun, 11 Oct 2026) Changed paths: M src/emc/motion/simple_tp.c A tests/jog-speed-change/README A tests/jog-speed-change/checkresult A tests/jog-speed-change/sim.hal A tests/jog-speed-change/test-ui.py A tests/jog-speed-change/test.ini A tests/jog-speed-change/test.sh A tests/jog-speed-change/tool.tbl Log Message: ----------- motion: ramp a jog down to a lowered speed on the S-curve planner A continuous jog asked again at a lower speed while it runs, as halui does when its jog-speed pin changes while a jog pin is held, dropped to the new speed in one servo cycle on the S-curve planner: the ramp toward max_vel was computed, then the speed was clamped to max_vel anyway. >From 80 to 10 mm/s that is 70000 mm/s^2 against an 800 limit, on a joint jog and on a world jog alike. The trapezoid planner ramps. Clamp only while the speed is within max_vel; above it the ramp brings it down within the acceleration and jerk limits. tests/jog-speed-change samples every servo cycle of both jogs on both planners. Commit: 2655e62fe6aa38a6a6fa158aab9655911a393c39 https://github.com/LinuxCNC/linuxcnc/commit/2655e62fe6aa38a6a6fa158aab9655911a393c39 Author: Luca Toniolo <107...@us...> Date: 2026-10-12 (Mon, 12 Oct 2026) Changed paths: M src/emc/motion/simple_tp.c A tests/jog-speed-change/README A tests/jog-speed-change/checkresult A tests/jog-speed-change/sim.hal A tests/jog-speed-change/test-ui.py A tests/jog-speed-change/test.ini A tests/jog-speed-change/test.sh A tests/jog-speed-change/tool.tbl Log Message: ----------- Merge pull request #4667 from grandixximo/scurve-jog-slowdown motion: ramp a jog down to a lowered speed on the S-curve planner Compare: https://github.com/LinuxCNC/linuxcnc/compare/c67a718de50d...2655e62fe6aa To unsubscribe from these emails, change your notification settings at https://github.com/LinuxCNC/linuxcnc/settings/notifications |
|
From: Luca T. <no...@gi...> - 2026-10-11 23:50:38
|
Branch: refs/heads/master Home: https://github.com/LinuxCNC/linuxcnc Commit: 247f327d11ee8bc6ba8f0d119aa550f30eea5392 https://github.com/LinuxCNC/linuxcnc/commit/247f327d11ee8bc6ba8f0d119aa550f30eea5392 Author: Luca Toniolo <107...@us...> Date: 2026-10-11 (Sun, 11 Oct 2026) Changed paths: M src/libnml/cms/cms.hh M src/libnml/nml/cmd_msg.cc M src/libnml/nml/cmd_msg.hh M src/libnml/nml/nml.cc M src/libnml/nml/nml.hh M src/libnml/nml/nmlmsg.cc M src/libnml/nml/nmlmsg.hh Log Message: ----------- libnml: use int64_t instead of long for CMS/NML sizes and ids Since efe4ef2029f the CMS_UPDATER overloads are fixed-width. On LP64 long == int64_t so callers passing long still compiled; on ILP32 long matches no overload and the i386 build fails (260 errors, all in libnml). Use explicit int64_t at the affected declarations. No functional change on 64-bit. Side effect: the NML encoded header layout no longer depends on the width of long. Commit: 6b72db84963d0dc1054f8fd682d0348a67b3ef08 https://github.com/LinuxCNC/linuxcnc/commit/6b72db84963d0dc1054f8fd682d0348a67b3ef08 Author: Luca Toniolo <107...@us...> Date: 2026-10-11 (Sun, 11 Oct 2026) Changed paths: M src/hal/components/plasmac.comp M src/rtapi/rtapi_stdint.h Log Message: ----------- plasmac: print 64-bit sint values arch-neutrally The plasmac low_cut_volts print used %ld with a hal_get_sint() value (int64_t), which only matches on LP64. Use PRId64, since rtapi_print_msg is the only output channel in a realtime component. The kernel branch of rtapi_stdint.h has no inttypes.h, so give it PRId64/PRIu64 fallbacks matching printk's long long s64. Commit: c67a718de50dc09460cc60c33ca9594b8f53de4d https://github.com/LinuxCNC/linuxcnc/commit/c67a718de50dc09460cc60c33ca9594b8f53de4d Author: Luca Toniolo <107...@us...> Date: 2026-10-12 (Mon, 12 Oct 2026) Changed paths: M src/hal/components/plasmac.comp M src/libnml/cms/cms.hh M src/libnml/nml/cmd_msg.cc M src/libnml/nml/cmd_msg.hh M src/libnml/nml/nml.cc M src/libnml/nml/nml.hh M src/libnml/nml/nmlmsg.cc M src/libnml/nml/nmlmsg.hh M src/rtapi/rtapi_stdint.h Log Message: ----------- Merge pull request #4614 from grandixximo/nml-int64-ilp32 libnml: use int64_t instead of long for CMS/NML sizes and ids Compare: https://github.com/LinuxCNC/linuxcnc/compare/3a7faff4bbc2...c67a718de50d To unsubscribe from these emails, change your notification settings at https://github.com/LinuxCNC/linuxcnc/settings/notifications |
|
From: Luca T. <no...@gi...> - 2026-10-11 14:13:45
|
Branch: refs/heads/master Home: https://github.com/LinuxCNC/linuxcnc Commit: 371d7925c43a916f760f32889ccdb8421dd62d36 https://github.com/LinuxCNC/linuxcnc/commit/371d7925c43a916f760f32889ccdb8421dd62d36 Author: Rimas <rim...@gm...> Date: 2026-10-08 (Thu, 08 Oct 2026) Changed paths: M src/emc/tp/blendmath.c A tests/tp/circle-curvature/curvature.hal A tests/tp/circle-curvature/curvaturecheck.c A tests/tp/circle-curvature/expected A tests/tp/circle-curvature/skip A tests/tp/circle-curvature/test.sh A tests/tp/helix-motion/.gitignore A tests/tp/helix-motion/capture.hal A tests/tp/helix-motion/expected A tests/tp/helix-motion/test-ui.py A tests/tp/helix-motion/test.ini A tests/tp/helix-motion/test.sh A tests/tp/helix-motion/tools.tbl Log Message: ----------- tp: make helix curvature independent of arc subdivision Commit: 3a7faff4bbc2f8cb00dd29856a196ea97defec95 https://github.com/LinuxCNC/linuxcnc/commit/3a7faff4bbc2f8cb00dd29856a196ea97defec95 Author: Luca Toniolo <107...@us...> Date: 2026-10-11 (Sun, 11 Oct 2026) Changed paths: M src/emc/tp/blendmath.c A tests/tp/circle-curvature/curvature.hal A tests/tp/circle-curvature/curvaturecheck.c A tests/tp/circle-curvature/expected A tests/tp/circle-curvature/skip A tests/tp/circle-curvature/test.sh A tests/tp/helix-motion/.gitignore A tests/tp/helix-motion/capture.hal A tests/tp/helix-motion/expected A tests/tp/helix-motion/test-ui.py A tests/tp/helix-motion/test.ini A tests/tp/helix-motion/test.sh A tests/tp/helix-motion/tools.tbl Log Message: ----------- Merge pull request #4643 from Rimas2200/fix/tp-circle-curvature tp: make helix curvature independent of arc subdivision Compare: https://github.com/LinuxCNC/linuxcnc/compare/49774b45bbbd...3a7faff4bbc2 To unsubscribe from these emails, change your notification settings at https://github.com/LinuxCNC/linuxcnc/settings/notifications |
|
From: Luca T. <no...@gi...> - 2026-10-11 10:20:31
|
Branch: refs/heads/master Home: https://github.com/LinuxCNC/linuxcnc Commit: b308b8339709ca0177bab35690b822aca64cc51f https://github.com/LinuxCNC/linuxcnc/commit/b308b8339709ca0177bab35690b822aca64cc51f Author: Luca Toniolo <107...@us...> Date: 2026-10-03 (Sat, 03 Oct 2026) Changed paths: M src/hal/components/sampler_usr.c M src/hal/drivers/mesa-hostmot2/hm2_eth.c M src/hal/utils/halcmd_commands.cc M src/hal/utils/halsh.c M src/hal/utils/meter.c Log Message: ----------- hal: print 64-bit values and pointers without long long casts Use PRId64/PRIu64 for hal_sint/hal_uint values (halsh, halmeter, sampler_usr) and PRIxPTR for the rtapi_intptr_t function pointers in halcmd show funct. The macros pick the right specifier on LP64 and ILP32, so format and argument agree everywhere with no cast. Also fix signedness of the hm2_eth debug time prints (%lld, not %llu). Commit: 49774b45bbbd5892d5f0641580c640d4547632df https://github.com/LinuxCNC/linuxcnc/commit/49774b45bbbd5892d5f0641580c640d4547632df Author: Luca Toniolo <107...@us...> Date: 2026-10-11 (Sun, 11 Oct 2026) Changed paths: M src/hal/components/sampler_usr.c M src/hal/drivers/mesa-hostmot2/hm2_eth.c M src/hal/utils/halcmd_commands.cc M src/hal/utils/halsh.c M src/hal/utils/meter.c Log Message: ----------- Merge pull request #4617 from grandixximo/hal-print-arch-clean hal: print 64-bit values and pointers without long long casts Compare: https://github.com/LinuxCNC/linuxcnc/compare/cd41211f58f5...49774b45bbbd To unsubscribe from these emails, change your notification settings at https://github.com/LinuxCNC/linuxcnc/settings/notifications |
|
From: Luca T. <no...@gi...> - 2026-10-11 10:17:47
|
Branch: refs/heads/master Home: https://github.com/LinuxCNC/linuxcnc Commit: 72e5d4a155f51d5f868958be513ff0c9712af808 https://github.com/LinuxCNC/linuxcnc/commit/72e5d4a155f51d5f868958be513ff0c9712af808 Author: Luca Toniolo <107...@us...> Date: 2026-10-01 (Thu, 01 Oct 2026) Changed paths: M src/emc/usr_intf/qtvcp/qtvcp.py Log Message: ----------- qtvcp: ignore traceback-less exceptions in excepthook An exception with exc_tb None was raised in C code outside any Python frame, e.g. a numpy ABI mismatch reported by a compiled extension during a guarded import (camview catches the real ImportError and degrades to a blank widget). Treating it as an unhandled exception wedged the GUI behind a modal error dialog. Log it and keep running. Commit: cd41211f58f5a67fdd20ceaa4513bd9ae77f198a https://github.com/LinuxCNC/linuxcnc/commit/cd41211f58f5a67fdd20ceaa4513bd9ae77f198a Author: Luca Toniolo <107...@us...> Date: 2026-10-11 (Sun, 11 Oct 2026) Changed paths: M src/emc/usr_intf/qtvcp/qtvcp.py Log Message: ----------- Merge pull request #4612 from grandixximo/qtvcp-excepthook-tbnone qtvcp: ignore traceback-less exceptions in excepthook Compare: https://github.com/LinuxCNC/linuxcnc/compare/a7e0a636fe20...cd41211f58f5 To unsubscribe from these emails, change your notification settings at https://github.com/LinuxCNC/linuxcnc/settings/notifications |
|
From: Luca T. <no...@gi...> - 2026-10-11 10:08:03
|
Branch: refs/heads/master Home: https://github.com/LinuxCNC/linuxcnc Commit: 83b536826b12a571e203444c3cb1d9581391fad6 https://github.com/LinuxCNC/linuxcnc/commit/83b536826b12a571e203444c3cb1d9581391fad6 Author: Luca Toniolo <107...@us...> Date: 2026-10-10 (Sat, 10 Oct 2026) Changed paths: M src/emc/tooldata/tooldata_mmap.cc M src/emc/usr_intf/axis/extensions/emcmodule.cc M tests/ui-smoke/_lib/drive.py Log Message: ----------- emcmodule: retry the tool mmap attach in stat.poll() The first stat.poll() in a process tried tool_mmap_user() once. If task had not created ~/.tool.mmap yet, a static flag latched and every later poll() returned NULL without setting an exception, so Python raised SystemError forever and a new linuxcnc.stat() did not help. A stale ~/.tool.mmap from an earlier run hid it; isolated test runs and a fresh HOME failed every time. Retry the attach on each poll until it succeeds and leave initialized at 0 meanwhile, so tool_table and toolinfo report no data instead of touching a NULL mapping. poll() warns once, and says when the mmap became available, so the warning does not read as a failure (hdiethelm asked for that after hunting the cause in CI logs). tool_mmap_user() warns once and names the file and the step that failed: open or fstat with the errno, or a file still shorter than the mapping. The creator truncates before extending, and mapping the file in that window would SIGBUS on first access, so a short file counts as absent. BsAtHome asked for the reason and the size_t comparison. Drop the drive.py comment that described the SystemError as normal startup noise. Fixes #4656 Commit: a7e0a636fe20af5c7648e29098dc0caf1c1cd388 https://github.com/LinuxCNC/linuxcnc/commit/a7e0a636fe20af5c7648e29098dc0caf1c1cd388 Author: Luca Toniolo <107...@us...> Date: 2026-10-11 (Sun, 11 Oct 2026) Changed paths: M src/emc/tooldata/tooldata_mmap.cc M src/emc/usr_intf/axis/extensions/emcmodule.cc M tests/ui-smoke/_lib/drive.py Log Message: ----------- Merge pull request #4658 from grandixximo/tool-mmap-poll-retry emcmodule: retry the tool mmap attach in stat.poll() Compare: https://github.com/LinuxCNC/linuxcnc/compare/6c300638fdb2...a7e0a636fe20 To unsubscribe from these emails, change your notification settings at https://github.com/LinuxCNC/linuxcnc/settings/notifications |
|
From: Luca T. <no...@gi...> - 2026-10-11 10:02:30
|
Branch: refs/heads/master Home: https://github.com/LinuxCNC/linuxcnc Commit: f4e3d938fec82e59b26e7e9463a6aa284f0d7c61 https://github.com/LinuxCNC/linuxcnc/commit/f4e3d938fec82e59b26e7e9463a6aa284f0d7c61 Author: Maximilian Heise <760...@us...> Date: 2026-10-05 (Mon, 05 Oct 2026) Changed paths: M docs/src/gui/pyvcp.adoc M lib/python/pyvcp_widgets.py M tests/pyvcp/expected M tests/pyvcp/test.xml Log Message: ----------- pyvcp: add an optional reset button to the spinbox widget The pyvcp spinbox controls a float pin, but once its value has been moved there is no way back to the value the panel started with other than typing that value in again. This adds two optional XML tags to the widget in lib/python/pyvcp_widgets.py, class pyvcp_spinbox: <reset_button>1</reset_button> <reset_text>"back to zero"</reset_text> <reset_button> places a button directly below the spinbox. Clicking it calls the new method reset_to_init(), which puts the value given by <initval> back into the widget variable, so the display changes at once and the next update() cycle carries that value out to the HAL pin. <reset_text> sets the label on the button and defaults to "reset". Neither tag has any effect unless it appears in the panel XML, so every existing panel behaves exactly as it did. Mechanically the class changes from a Spinbox into a Frame that holds the Spinbox as self.sb, because a Tk widget cannot carry a sibling inside itself. The spinbox is packed to fill that frame completely, so a panel without the new tags lays the spinbox out in the same rectangle as before. Every keyword the widget already accepted (halpin, halparam, param_pin, min_, max_, initval, resolution, format, and anything passed on through **kw) still reaches the spinbox unchanged. The mouse-wheel and Return bindings move from the widget itself to the inner spinbox, which is where the pointer and the keyboard focus actually are. The param_pin path is untouched: an external writer still drives the value through the parameter pin, and the reset button returns to <initval> rather than to the last value that pin delivered. The value remembered for the reset is the one that survived the existing min_/max_ clamping, so an <initval> outside the range resets to the clamped value. The use case is a machine integration panel. An analog output setpoint is nudged up and down with the mouse wheel while a drive or an axis is being commissioned, and the operator must be able to snap that setpoint back to its safe initial value with a single click instead of typing it. docs/src/gui/pyvcp.adoc describes both tags in the Spinbox section and gains a short XML example that uses them. tests/pyvcp/test.xml gains a fifth spinbox that sets both tags, and tests/pyvcp/expected its one output pin, so the existing pyvcp regression test also builds the reset button. I used that code with my cnc machine integration panel and it worked. Commit: 6c300638fdb2863ec376c49c59e25136aab75e9a https://github.com/LinuxCNC/linuxcnc/commit/6c300638fdb2863ec376c49c59e25136aab75e9a Author: Luca Toniolo <107...@us...> Date: 2026-10-11 (Sun, 11 Oct 2026) Changed paths: M docs/src/gui/pyvcp.adoc M lib/python/pyvcp_widgets.py M tests/pyvcp/expected M tests/pyvcp/test.xml Log Message: ----------- Merge pull request #4640 from maxheise/pyvcp-spinbox-reset-button pyvcp: add an optional reset button to the spinbox widget Compare: https://github.com/LinuxCNC/linuxcnc/compare/fbae6548b670...6c300638fdb2 To unsubscribe from these emails, change your notification settings at https://github.com/LinuxCNC/linuxcnc/settings/notifications |
|
From: Luca T. <no...@gi...> - 2026-10-11 10:01:02
|
Branch: refs/heads/2.9 Home: https://github.com/LinuxCNC/linuxcnc Commit: 9dc0eedac17b30cbd2efe33acc4792e84e955b4b https://github.com/LinuxCNC/linuxcnc/commit/9dc0eedac17b30cbd2efe33acc4792e84e955b4b Author: Luca Toniolo <107...@us...> Date: 2026-10-06 (Tue, 06 Oct 2026) Changed paths: M src/configure.ac Log Message: ----------- configure: fix libtirpc pkg-config detection The conditional tested whether the string "pkg-config libtirpc" is empty, which it never is, so the fallback block ran unconditionally. Use $PKG_CONFIG --exists as intended, and route the block's other pkg-config calls through $PKG_CONFIG too so a cross pkg-config is honored. Behavior is unchanged in practice: without libtirpc.pc the block is now skipped and configure fails later with the same explicit error. Refs #652. Commit: 646fdb42cf8cf55d66ed43a6842fac106af07137 https://github.com/LinuxCNC/linuxcnc/commit/646fdb42cf8cf55d66ed43a6842fac106af07137 Author: Luca Toniolo <107...@us...> Date: 2026-10-11 (Sun, 11 Oct 2026) Changed paths: M src/configure.ac Log Message: ----------- Merge pull request #4639 from grandixximo/tirpc-conditional-2.9 configure: fix libtirpc pkg-config detection Compare: https://github.com/LinuxCNC/linuxcnc/compare/6ae8cf23e715...646fdb42cf8c To unsubscribe from these emails, change your notification settings at https://github.com/LinuxCNC/linuxcnc/settings/notifications |
|
From: Luca T. <no...@gi...> - 2026-10-11 10:00:19
|
Branch: refs/heads/2.9 Home: https://github.com/LinuxCNC/linuxcnc Commit: 4d45f0cd2089e4ad50337f360791400ef3129972 https://github.com/LinuxCNC/linuxcnc/commit/4d45f0cd2089e4ad50337f360791400ef3129972 Author: Luca Toniolo <107...@us...> Date: 2026-10-05 (Mon, 05 Oct 2026) Changed paths: M src/emc/rs274ngc/gcodemodule.cc Log Message: ----------- gcodemodule: report the actual exception from failed canon callbacks When a Python callback invoked during parse_file raises (for example a canon object missing get_external_length_units), the error exit replaced the pending exception with RuntimeError("parse_file interp_error"), so AXIS and friends could only report that generic message instead of the actual error. The exception is already on the indicator; keep it. Fixes #2492. Commit: 6ae8cf23e7156471fc6903efd503b9047a751ebb https://github.com/LinuxCNC/linuxcnc/commit/6ae8cf23e7156471fc6903efd503b9047a751ebb Author: Luca Toniolo <107...@us...> Date: 2026-10-11 (Sun, 11 Oct 2026) Changed paths: M src/emc/rs274ngc/gcodemodule.cc Log Message: ----------- Merge pull request #4636 from grandixximo/gcodemodule-err-2492-2.9 gcodemodule: report the actual exception from failed canon callbacks Compare: https://github.com/LinuxCNC/linuxcnc/compare/34a95d43f7af...6ae8cf23e715 To unsubscribe from these emails, change your notification settings at https://github.com/LinuxCNC/linuxcnc/settings/notifications |
|
From: Luca T. <no...@gi...> - 2026-10-11 09:58:25
|
Branch: refs/heads/master Home: https://github.com/LinuxCNC/linuxcnc Commit: 777aacf2ca592495866a5dbb53f36a7431a16ffa https://github.com/LinuxCNC/linuxcnc/commit/777aacf2ca592495866a5dbb53f36a7431a16ffa Author: Luca Toniolo <107...@us...> Date: 2026-10-04 (Sun, 04 Oct 2026) Changed paths: M src/emc/kinematics/kinematics.h M src/emc/kinematics/kins_util.c M src/emc/motion/axis.c Log Message: ----------- motion: per-axis homed check for teleop jog soft limits (#182) Axis (teleop) jogs were clamped to the INI soft limits even when the machine was not homed, so an unhomed machine at position 0 could only jog as far as the limits allowed from 0. Joint jogs have used the current position plus/minus one limit range in this case since 2006 (refresh_jog_limits). Identity kinematics allow entering teleop mode unhomed, so the axis jog path needs the same treatment. Axes are not homed, joints are. Treat an axis as homed when every joint mapped to its coordinate letter is homed, using the joint bitmaps kins_util already builds from the coordinates parameter, now exported as identityKinematicsAxisJointsBitmap(). A gantry letter with two joints needs both homed before its INI limits apply. Non-identity kins can only be in teleop mode when all joints are homed, so nothing changes there. A homed axis jogs within its INI soft limits as before. An unhomed axis jogs within one limit range of its current position, and the servo-cycle INI limit check in update_teleop_with_check() is skipped for it, since the position is not known. Out-of-tree identity kins modules built on an old kins_util copy do not export the new accessor and need a rebuild against these headers. Fixes #182 Commit: fbae6548b67073cbdad4c2686456e0fd21101810 https://github.com/LinuxCNC/linuxcnc/commit/fbae6548b67073cbdad4c2686456e0fd21101810 Author: Luca Toniolo <107...@us...> Date: 2026-10-11 (Sun, 11 Oct 2026) Changed paths: M src/emc/kinematics/kinematics.h M src/emc/kinematics/kins_util.c M src/emc/motion/axis.c Log Message: ----------- Merge pull request #4631 from grandixximo/axis-jog-unhomed-182 motion: per-axis homed check for teleop jog soft limits Compare: https://github.com/LinuxCNC/linuxcnc/compare/62b971fea06b...fbae6548b670 To unsubscribe from these emails, change your notification settings at https://github.com/LinuxCNC/linuxcnc/settings/notifications |
|
From: Luca T. <no...@gi...> - 2026-10-11 09:54:46
|
Branch: refs/heads/master Home: https://github.com/LinuxCNC/linuxcnc Commit: f1f75d8dbb136a656342b484b7048841fbfdde24 https://github.com/LinuxCNC/linuxcnc/commit/f1f75d8dbb136a656342b484b7048841fbfdde24 Author: Luca Toniolo <107...@us...> Date: 2026-10-04 (Sun, 04 Oct 2026) Changed paths: M src/emc/motion/homing.c Log Message: ----------- homing: drop the dead HOME_DELAY timer in HOME_FINAL_MOVE_START The timer branch incremented pause_timer, fell through, and zeroed it in the same servo cycle; it has never delayed anything since the 2022 state-machine rework dropped its break (becaf35c2f). The missing delay was reported as a bug (#4621) and the resolution was to declare the current behavior intended (#4628, docs updated). Remove the dead code and say in a comment that the absence of HOME_DELAY here is deliberate, so the state no longer reads as an accidental omission. Commit: 62b971fea06bc2b08fbe23f78993d0761159e3eb https://github.com/LinuxCNC/linuxcnc/commit/62b971fea06bc2b08fbe23f78993d0761159e3eb Author: Luca Toniolo <107...@us...> Date: 2026-10-11 (Sun, 11 Oct 2026) Changed paths: M src/emc/motion/homing.c Log Message: ----------- Merge pull request #4629 from grandixximo/home-final-no-delay homing: drop the dead HOME_DELAY timer in HOME_FINAL_MOVE_START Compare: https://github.com/LinuxCNC/linuxcnc/compare/2af2d908f84b...62b971fea06b To unsubscribe from these emails, change your notification settings at https://github.com/LinuxCNC/linuxcnc/settings/notifications |
|
From: Luca T. <no...@gi...> - 2026-10-11 09:50:21
|
Branch: refs/heads/master Home: https://github.com/LinuxCNC/linuxcnc Commit: 0dbf954fcca5070d17356e31df666911a8d961be https://github.com/LinuxCNC/linuxcnc/commit/0dbf954fcca5070d17356e31df666911a8d961be Author: yurc <yu...@gm...> Date: 2026-10-03 (Sat, 03 Oct 2026) Changed paths: M src/emc/motion/command.c Log Message: ----------- motion: refuse M62-M68 on a non-existent output An out-of-range P/E only printed a line in the log and the program went on with an output that never switches. Refuse the command instead (EMCMOT_COMMAND_INVALID_PARAMS + reportError), so task stops the program. Commit: 7e8a9eff404513871e45bf84aac1d9e6fbfec0f7 https://github.com/LinuxCNC/linuxcnc/commit/7e8a9eff404513871e45bf84aac1d9e6fbfec0f7 Author: yurc <yu...@gm...> Date: 2026-10-04 (Sun, 04 Oct 2026) Changed paths: M docs/src/gcode/m-code.adoc A tests/m62-m68-range/checkresult A tests/m62-m68-range/motion.hal A tests/m62-m68-range/test-ui.py A tests/m62-m68-range/test.ini A tests/m62-m68-range/test.sh Log Message: ----------- tests, docs: M62-M68 on a non-existent output is an error Add tests/m62-m68-range: with num_dio=4 and num_aio=4, M64 P3 and M68 E3 still work, M64 P4, M65 P10 and M68 E4 are refused with an error, and a program stops exactly at M64 P10, M62 P10 or M67 E7: the line before it runs, neither the next line nor the following move does. Document in m-code.adoc that an out-of-range P- or E-word is an error. Commit: 2af2d908f84b85bde968e23ac58566ca38cbc71d https://github.com/LinuxCNC/linuxcnc/commit/2af2d908f84b85bde968e23ac58566ca38cbc71d Author: Luca Toniolo <107...@us...> Date: 2026-10-11 (Sun, 11 Oct 2026) Changed paths: M docs/src/gcode/m-code.adoc M src/emc/motion/command.c A tests/m62-m68-range/checkresult A tests/m62-m68-range/motion.hal A tests/m62-m68-range/test-ui.py A tests/m62-m68-range/test.ini A tests/m62-m68-range/test.sh Log Message: ----------- Merge pull request #4624 from SyncTwin/synctwin/m62-m68-out-of-range-error motion: make M62-M68 on a non-existent output an error Compare: https://github.com/LinuxCNC/linuxcnc/compare/ecdb6c09f73a...2af2d908f84b To unsubscribe from these emails, change your notification settings at https://github.com/LinuxCNC/linuxcnc/settings/notifications |
|
From: Luca T. <no...@gi...> - 2026-10-11 09:47:18
|
Branch: refs/heads/master Home: https://github.com/LinuxCNC/linuxcnc Commit: fe62f564d17809b564325ccc0a0a21db4f013e94 https://github.com/LinuxCNC/linuxcnc/commit/fe62f564d17809b564325ccc0a0a21db4f013e94 Author: Luca Toniolo <107...@us...> Date: 2026-10-03 (Sat, 03 Oct 2026) Changed paths: M lib/python/glnav.py Log Message: ----------- glnav: avoid divide-by-zero in set_eyepoint_from_extents (#2093) winfo_height() returns 0 before the widget is realized, and set_current_view can reach this path at that point. Clamp height to 1, same as the existing guard for #2510 elsewhere in the file. Commit: ecdb6c09f73ae83fc456f3a877fa376110a1bb4a https://github.com/LinuxCNC/linuxcnc/commit/ecdb6c09f73ae83fc456f3a877fa376110a1bb4a Author: Luca Toniolo <107...@us...> Date: 2026-10-11 (Sun, 11 Oct 2026) Changed paths: M lib/python/glnav.py Log Message: ----------- Merge pull request #4620 from grandixximo/glnav-2093 glnav: avoid divide-by-zero in set_eyepoint_from_extents Compare: https://github.com/LinuxCNC/linuxcnc/compare/56ac1b64a016...ecdb6c09f73a To unsubscribe from these emails, change your notification settings at https://github.com/LinuxCNC/linuxcnc/settings/notifications |
|
From: Luca T. <no...@gi...> - 2026-10-11 09:41:06
|
Branch: refs/heads/master Home: https://github.com/LinuxCNC/linuxcnc Commit: 91f28b6844b048f4d0436dcd8053848c45ed9392 https://github.com/LinuxCNC/linuxcnc/commit/91f28b6844b048f4d0436dcd8053848c45ed9392 Author: Luca Toniolo <107...@us...> Date: 2026-10-02 (Fri, 02 Oct 2026) Changed paths: M docs/src/config/python-interface.adoc M docs/src/gcode/g-code.adoc A docs/src/gcode/images/g68-2-plane.svg M docs/src/gcode/overview.adoc M lib/python/preview_helpers.py M lib/python/rs274/glcanon.py M lib/python/rs274/interpret.py M src/emc/nml_intf/canon.hh M src/emc/nml_intf/emc.cc M src/emc/nml_intf/emc.hh M src/emc/nml_intf/emc_nml.hh M src/emc/nml_intf/emcops.cc M src/emc/rs274ngc/Submakefile M src/emc/rs274ngc/gcode_renderer.cc M src/emc/rs274ngc/gcode_renderer.hh M src/emc/rs274ngc/gcodemodule.cc M src/emc/rs274ngc/gcodemodule.hh M src/emc/rs274ngc/interp_array.cc M src/emc/rs274ngc/interp_check.cc M src/emc/rs274ngc/interp_convert.cc M src/emc/rs274ngc/interp_find.cc M src/emc/rs274ngc/interp_internal.cc M src/emc/rs274ngc/interp_internal.hh M src/emc/rs274ngc/interp_namedparams.cc M src/emc/rs274ngc/interp_remap.cc M src/emc/rs274ngc/interp_setup.cc A src/emc/rs274ngc/interp_workplane.cc M src/emc/rs274ngc/interp_write.cc M src/emc/rs274ngc/rs274ngc_interp.hh M src/emc/rs274ngc/rs274ngc_pre.cc M src/emc/sai/saicanon.cc M src/emc/task/emccanon.cc M src/emc/task/emctaskmain.cc M src/emc/usr_intf/axis/extensions/emcmodule.cc M src/emc/usr_intf/axis/scripts/axis.py M src/emc/usr_intf/halui.cc M tests/gcode-renderer/programs.py M tests/gcode-renderer/test_transform.py A tests/interp/g68-frame/expected A tests/interp/g68-frame/g68.ngc A tests/interp/g68-frame/test.sh A tests/interp/g68-words/expected A tests/interp/g68-words/test.sh A tests/remap/g68-override/expected A tests/remap/g68-override/r682.ngc A tests/remap/g68-override/r684.ngc A tests/remap/g68-override/r69.ngc A tests/remap/g68-override/test.ini A tests/remap/g68-override/test.ngc A tests/remap/g68-override/test.sh A tests/workplane-preview/compose.ngc A tests/workplane-preview/expected A tests/workplane-preview/move.ngc A tests/workplane-preview/test-ui.py A tests/workplane-preview/test.ini A tests/workplane-preview/test.sh Log Message: ----------- interpreter: add the tilted work plane, G68.2, G68.4 and G69 A frame composed inside the offset chain, so the blocks between a definition and its cancel are programmed in the tilted plane while G54 itself is untouched: world = TLO + G5x + Rz(rotation_xy) * (G92 + O + R * program) O and R are the plane's origin and rotation in the coordinate system active when it was defined; rotary and UVW words do not pass through it. G68.2 takes the Fanuc forms: three angles about the axes Q names (P0 Euler, P1 fixed axes), three points over up to four blocks (P2, the origin on the first point, shifted by Q0 along the plane's own axes, R on any one block), two vectors over two blocks (P3, the X direction kept as given and the normal squared to it, refused 5 degrees or more off square, as Fanuc does), each with an R about the plane's own Z. G68.4 composes any of those onto the active plane. G69 cancels; so do init, M2 and M30. An abort cancels it and tells canon even when the read ahead had already cancelled: status carries the plane the executed canon stream last set, and an abort throws the queued G69 away, so the two disagree until canon is told. An explicit G69 tells canon either way. The state tag restore that runs before it drops the read ahead's plane when the tag brings back another coordinate system, which that plane would refuse, leaving the interpreter in the read ahead's work offset while the machine is in the tag's. Canon gains SET_G68_FRAME and the frame stage in rotate_and_offset_pos() and its inverse, so positions, probe results and arcs follow the plane. Task status carries g68_offset, g68_rotation and g68_active; the python canons, AXIS and halui apply it. While a plane is active G92, G52, G10 L2/L20/L10/L11 and a coordinate system change are refused, since each defines the system the plane sits on. Each form takes only the words it reads; any other (I J K with P2, R off its block, X Y Z on the P3 Q2 block, A B C U V W anywhere) is refused rather than ignored. A P2 or P3 definition left unfinished in MDI is dropped when a program is opened. The previews restate the plane in effect on the machine as a full G68.2 block from status, on the machine's coordinate system, since the bare code in the active G-codes cannot carry it. A REMAP of G68.2, G68.4 or G69 still takes over the built-in code, so configs that bring their own, like the nutating TWP sims, keep working. Tests: tests/interp/g68-words, tests/remap/g68-override, tests/workplane-preview. Both reported by Sigma1912. Commit: e1d17578f2265cdbbbc8e77115c4730a5d31be5b https://github.com/LinuxCNC/linuxcnc/commit/e1d17578f2265cdbbbc8e77115c4730a5d31be5b Author: Luca Toniolo <107...@us...> Date: 2026-10-03 (Sat, 03 Oct 2026) Changed paths: M docs/src/gcode/g-code.adoc M lib/python/rs274/glcanon.py M lib/python/rs274/glcanon_scene.py M src/emc/rs274ngc/gcode_renderer.cc M src/emc/rs274ngc/gcode_renderer.hh M tests/gcode-renderer/canon.py M tests/glcanon/test.sh A tests/glcanon/test_workplane.py Log Message: ----------- glcanon: draw the tilted work planes a program defines Where a program's G68.2 planes sit is the hardest thing to check by reading it, so the preview draws each: a rectangle lying in the plane over the moves made under it, with a margin, the plane's X, Y and Z at the centre of the rectangle in the machine axis colours, and a cross at the plane's origin, which need not lie in the rectangle: a program drilling a sphere puts every origin at the centre and works out on the surface. The rectangle sits at the plane's Z where the program reaches it and otherwise at the nearest end of the Z range worked in, so a drilling cycle shows its holes; a plane nothing moved under gets a square a tenth of the program. A plane restated in a loop is one plane. The plane in effect on the machine, what status reports the last executed G68.2 set, is drawn over the others in its own colour, so the plane the program is in stands out; an MDI plane shows the same way. The renderer already receives every plane through set_g68_frame(); it records each as a WorkPlaneRecord, origin and axes through its transform like a move endpoint, every move under it extends the extents, and the records reach the canon with the rest of the program, as glcanon_scene.WorkPlane. WorkPlanePart draws them in the program's frame through gcode.display_points(), the GEOMETRY transform for points that are not a parse's, gated by show_workplane, colours 'workplane' and 'workplane_active'. Suggested by Sigma1912. tests/glcanon/test_workplane.py, on parsed programs; docs in the G68.2 section. Commit: 420b1189b55861aff49b91d9c45932e068c319b5 https://github.com/LinuxCNC/linuxcnc/commit/420b1189b55861aff49b91d9c45932e068c319b5 Author: Luca Toniolo <107...@us...> Date: 2026-10-03 (Sat, 03 Oct 2026) Changed paths: M configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/python/remap.py Log Message: ----------- nutating sim remap: build the G68.2 planes the way Fanuc and the native code do The sim's remap and the native G68.2 built different planes from the same program in four places, and the remap refused one program the native code accepts; the remap's G68.2 and G68.4 now follow the native code, which follows the Fanuc 0i-F operator manual (B-64604EN-2, 5.7.1): - R turned the plane about the work Z; it now turns it about the plane's own Z, in every form. - The three-point form (P2) took Q0's X Y Z as the origin in the work coordinates. The origin is now the first point, and Q0, which may be left out, shifts it along the plane's own axes. R may be given on any one block; R on two blocks is refused, as natively, since the manual does not say which would win. - The two-vector form (P3) read the X vector as a point and subtracted the origin from it, and it took Q0 and Q1 where Fanuc takes Q1 and Q2. It now takes Q1 and Q2, reads I J K as a direction, keeps X as given, squares the normal to it and refuses vectors 5 degrees or more off square, or a zero vector. - G68.4 refused to build on a plane that was defined but not yet activated with G53.n. Like the native code, it now needs only a defined plane. Commit: 669e3ea5234aa69ae593c23948bf11aa25c2119d https://github.com/LinuxCNC/linuxcnc/commit/669e3ea5234aa69ae593c23948bf11aa25c2119d Author: Luca Toniolo <107...@us...> Date: 2026-10-03 (Sat, 03 Oct 2026) Changed paths: M docs/src/gcode/g-code.adoc M src/emc/rs274ngc/interp_convert.cc M src/emc/rs274ngc/interp_internal.hh M src/emc/rs274ngc/interp_setup.cc M src/emc/rs274ngc/interp_workplane.cc M src/emc/rs274ngc/rs274ngc_interp.hh M tests/interp/g68-frame/expected M tests/interp/g68-frame/g68.ngc M tests/interp/g68-words/expected M tests/interp/g68-words/test.sh Log Message: ----------- interpreter: G52 in a tilted work plane shifts the plane along its own axes The Fanuc 0i-F operator manual (B-64604EN-2, 5.7.1.2) puts the local coordinate system inside the feature coordinate system: G52 given during tilted working plane indexing translates the plane along the plane's own X, Y and Z, and a new G68.2 while a G52 shift is in effect is an alarm. G52 was refused inside a plane until now; it now does that, which completes the chain: world = TLO + G5x + Rz(rotation_xy) * (G92 + O + R * (L + program)) L is kept apart from G92: G52 and G92 share their storage and their parameters, and a G52 given before the plane, which stays under it in G92, must not move with it. G52 in a plane takes X, Y and Z only, each word replacing its part of L as G52 does, writes no parameters, and is dropped by G69. G68.2 and G68.4 are refused while L is not zero, as on Fanuc. Canon and status carry the plane with L applied to its origin, so nothing outside the interpreter changes. G92 and the rest stay refused in a plane. Raised by Sigma1912. Commit: 36950db65d0aef76e6222b550aadb5181d61deb0 https://github.com/LinuxCNC/linuxcnc/commit/36950db65d0aef76e6222b550aadb5181d61deb0 Author: Luca Toniolo <107...@us...> Date: 2026-10-03 (Sat, 03 Oct 2026) Changed paths: M docs/src/config/ini-config.adoc M docs/src/gcode/g-code.adoc M docs/src/gcode/m-code.adoc M src/emc/nml_intf/canon.hh M src/emc/rs274ngc/gcodemodule.cc M src/emc/rs274ngc/interp_convert.cc M src/emc/rs274ngc/interp_internal.hh M src/emc/rs274ngc/interp_setup.cc M src/emc/rs274ngc/interp_workplane.cc M src/emc/rs274ngc/rs274ngc_interp.hh M src/emc/rs274ngc/rs274ngc_pre.cc M src/emc/sai/saicanon.cc M src/emc/task/emccanon.cc A tests/workplane-retain/clear.ini A tests/workplane-retain/end.ngc A tests/workplane-retain/expected A tests/workplane-retain/g55.ngc A tests/workplane-retain/g55plane.ngc A tests/workplane-retain/readahead.ngc A tests/workplane-retain/slow.ngc A tests/workplane-retain/test-ui.py A tests/workplane-retain/test.ini A tests/workplane-retain/test.sh Log Message: ----------- interpreter: [RS274NGC]RETAIN_WORK_PLANE keeps the tilted work plane through M2 and an abort An operator who sets the plane up in MDI and runs a program that does not set one loses it at the program's M2 and at every abort. Fanuc has the same default and parameter 5400#2 D3R to keep the plane through a reset; RETAIN_WORK_PLANE = 1 is that switch. It is off by default: a plane left over from an earlier job turns every move of the next one. A restart still clears the plane, as a power cycle does on Fanuc, and nothing is written to the var file. At M2 and M30 the plane stays where it is in the coordinate system, and the coordinate system changes under it as the end of a program changes it (G54 unless DISABLE_AUTO_G54, G92 cleared with DISABLE_G92_PERSISTENCE); the current point is taken through the chain so the tool does not move. After an abort the interpreter's plane is the read ahead's, which may be a later plane, a later G69, or none, so the plane kept is the one the machine was in: GET_EXTERNAL_G68_FRAME() reads it from status, which follows the executed commands. It answers no plane if the read ahead has left the coordinate system under it different from the machine's, and sai and the preview answer that there is no machine to ask, so the interpreter keeps its own. A G52 given in the plane survives when the machine was still in the plane the interpreter has; otherwise status, which only has the shifted origin, folds it into the origin. With the setting on, an ON_ABORT_COMMAND runs inside the plane. tests/workplane-retain runs the same cases with and without the setting: M2, an abort with the read ahead in the next plane, past a G55, in a plane on G55, and with a G52 in the plane, each checked by moving to the plane's origin afterwards. Raised by Sigma1912. Commit: 9106761aabd614472a5a799b312f0940324d31a6 https://github.com/LinuxCNC/linuxcnc/commit/9106761aabd614472a5a799b312f0940324d31a6 Author: Luca Toniolo <107...@us...> Date: 2026-10-03 (Sat, 03 Oct 2026) Changed paths: M docs/src/gcode/g-code.adoc M src/emc/rs274ngc/interp_convert.cc M src/emc/rs274ngc/interp_internal.hh M src/emc/rs274ngc/interp_workplane.cc M tests/interp/g68-frame/expected M tests/interp/g68-frame/g68.ngc M tests/workplane-retain/expected M tests/workplane-retain/test-ui.py Log Message: ----------- interpreter: a change of coordinate system in a tilted work plane takes the plane along G54 to G59.3 were refused while a plane was active. Fanuc refuses them too by default, but with parameter 1205#6 3TW set the work offset changes and the plane keeps its shift relative to it (0i-F operator manual B-64604EN-2, 5.7.1.2); the manual's example is the same tilted feature on several fixtures, one G68.2 and a G55, G56, G57 before each. A program written for the default never changes the system in a plane, since it would alarm, so allowing it only gives the refusal a meaning and needs no setting. The plane's origin and rotation stay as they are in the coordinate system, so the plane moves with the work offset and turns with its XY rotation. The current point goes through the whole chain before and after, the plane included, so the tool does not move; canon and status need nothing new, since they already compose the plane inside the work offset. G92, G10 L2/L20/L10/L11 stay refused: they change the system under the plane rather than select another. An ON_ABORT_COMMAND that cycles work offsets now runs inside a plane kept by RETAIN_WORK_PLANE. tests/interp/g68-frame switches from G55 to a G56 turned 90 degrees and checks the plane origin lands where it should; tests/workplane-retain checks the same on a running machine. Commit: 56ac1b64a016ef605600c2a470349163186aef09 https://github.com/LinuxCNC/linuxcnc/commit/56ac1b64a016ef605600c2a470349163186aef09 Author: Luca Toniolo <107...@us...> Date: 2026-10-11 (Sun, 11 Oct 2026) Changed paths: M configs/sim/axis/vismach/5axis/table-rotary_spindle-rotary-nutating/python/remap.py M docs/src/config/ini-config.adoc M docs/src/config/python-interface.adoc M docs/src/gcode/g-code.adoc A docs/src/gcode/images/g68-2-plane.svg M docs/src/gcode/m-code.adoc M docs/src/gcode/overview.adoc M lib/python/preview_helpers.py M lib/python/rs274/glcanon.py M lib/python/rs274/glcanon_scene.py M lib/python/rs274/interpret.py M src/emc/nml_intf/canon.hh M src/emc/nml_intf/emc.cc M src/emc/nml_intf/emc.hh M src/emc/nml_intf/emc_nml.hh M src/emc/nml_intf/emcops.cc M src/emc/rs274ngc/Submakefile M src/emc/rs274ngc/gcode_renderer.cc M src/emc/rs274ngc/gcode_renderer.hh M src/emc/rs274ngc/gcodemodule.cc M src/emc/rs274ngc/gcodemodule.hh M src/emc/rs274ngc/interp_array.cc M src/emc/rs274ngc/interp_check.cc M src/emc/rs274ngc/interp_convert.cc M src/emc/rs274ngc/interp_find.cc M src/emc/rs274ngc/interp_internal.cc M src/emc/rs274ngc/interp_internal.hh M src/emc/rs274ngc/interp_namedparams.cc M src/emc/rs274ngc/interp_remap.cc M src/emc/rs274ngc/interp_setup.cc A src/emc/rs274ngc/interp_workplane.cc M src/emc/rs274ngc/interp_write.cc M src/emc/rs274ngc/rs274ngc_interp.hh M src/emc/rs274ngc/rs274ngc_pre.cc M src/emc/sai/saicanon.cc M src/emc/task/emccanon.cc M src/emc/task/emctaskmain.cc M src/emc/usr_intf/axis/extensions/emcmodule.cc M src/emc/usr_intf/axis/scripts/axis.py M src/emc/usr_intf/halui.cc M tests/gcode-renderer/canon.py M tests/gcode-renderer/programs.py M tests/gcode-renderer/test_transform.py M tests/glcanon/test.sh A tests/glcanon/test_workplane.py A tests/interp/g68-frame/expected A tests/interp/g68-frame/g68.ngc A tests/interp/g68-frame/test.sh A tests/interp/g68-words/expected A tests/interp/g68-words/test.sh A tests/remap/g68-override/expected A tests/remap/g68-override/r682.ngc A tests/remap/g68-override/r684.ngc A tests/remap/g68-override/r69.ngc A tests/remap/g68-override/test.ini A tests/remap/g68-override/test.ngc A tests/remap/g68-override/test.sh A tests/workplane-preview/compose.ngc A tests/workplane-preview/expected A tests/workplane-preview/move.ngc A tests/workplane-preview/test-ui.py A tests/workplane-preview/test.ini A tests/workplane-preview/test.sh A tests/workplane-retain/clear.ini A tests/workplane-retain/end.ngc A tests/workplane-retain/expected A tests/workplane-retain/g55.ngc A tests/workplane-retain/g55plane.ngc A tests/workplane-retain/readahead.ngc A tests/workplane-retain/slow.ngc A tests/workplane-retain/test-ui.py A tests/workplane-retain/test.ini A tests/workplane-retain/test.sh Log Message: ----------- Merge pull request #4600 from grandixximo/twp-plane interp: the tilted work plane, G68.2, G68.4 and G69 Compare: https://github.com/LinuxCNC/linuxcnc/compare/85f75dfde431...56ac1b64a016 To unsubscribe from these emails, change your notification settings at https://github.com/LinuxCNC/linuxcnc/settings/notifications |
|
From: Luca T. <no...@gi...> - 2026-10-11 09:35:19
|
Branch: refs/heads/master Home: https://github.com/LinuxCNC/linuxcnc Commit: 8229dd5621d38b68bf87692de0e4ecfff290d692 https://github.com/LinuxCNC/linuxcnc/commit/8229dd5621d38b68bf87692de0e4ecfff290d692 Author: Luca Toniolo <107...@us...> Date: 2026-10-06 (Tue, 06 Oct 2026) Changed paths: M src/Makefile M src/emc/kinematics/switchkins.c M src/emc/kinematics/switchkins.h A src/emc/kinematics/switchkins_main.c Log Message: ----------- switchkins: separate the dispatch from rtapi_app_main() switchkins.c owned rtapi_app_main(), so a module could only use it by having no main of its own, which ruled out halcompile components: the switchable kinematics in hal/components each carry a private copy of the dispatch. Move rtapi_app_main(), rtapi_app_exit() and the coordinates= and sparm= parameters to switchkins_main.c and give switchkins.c one entry point, switchkinsInit(comp_id, kp, coordinates), which counts and validates the registered types, creates the pins and starts on type 0. The caller owns the component. The types switchkinsSetup() supplies now go through switchkinsRegister() like any others, so one registration path checks every type and a double registration is refused. The eight existing modules add switchkins_main.o to their objects and are otherwise untouched. Commit: 5c5936c1ef40f6a6439889649f5ffa677cf97930 https://github.com/LinuxCNC/linuxcnc/commit/5c5936c1ef40f6a6439889649f5ffa677cf97930 Author: Luca Toniolo <107...@us...> Date: 2026-10-06 (Tue, 06 Oct 2026) Changed paths: M docs/src/motion/switchkins.adoc M src/Makefile M src/emc/kinematics/switchkins.h M src/hal/components/Submakefile M src/hal/components/millturn.comp M src/hal/components/xyzab_tdr_kins.comp M src/hal/components/xyzacb_trsrn.comp M src/hal/components/xyzbca_trsrn.comp Log Message: ----------- switchkins: let halcompile components use the switchkins core millturn, xyzab_tdr_kins, xyzacb_trsrn and xyzbca_trsrn each carried a copy of the switchkins dispatch, a private switchkins_type, a hand-written kinematicsSwitch() and a setup that had to hal_set_unready() the component again. Now that the dispatch is separate from the main program a component links it and calls switchkinsInit() from EXTRA_SETUP(). Two build changes: the generated per-comp .mak takes a <component>-extra-objs list, and switchkins.h is copied to ../include and installed so <switchkins.h> resolves from a generated source. Each of the four registers its types and calls switchkinsInit(); their identity type comes from kins_util.c, which gets them the coordinates= parameter, and a bad motion.switchkins-type is refused instead of stranding the module. Pin names are unchanged except millturn's unused in/out template pins. The four sim configs give the same positions through the same MDI sequence as before, in every kinematics type. Commit: ee76b1bdc1b66204ae0b8f96dcc8426010539234 https://github.com/LinuxCNC/linuxcnc/commit/ee76b1bdc1b66204ae0b8f96dcc8426010539234 Author: Luca Toniolo <107...@us...> Date: 2026-10-06 (Tue, 06 Oct 2026) Changed paths: M src/emc/kinematics/5axiskins.c M src/emc/kinematics/genhexkins.c M src/emc/kinematics/genserkins.c M src/emc/kinematics/pumakins.c M src/emc/kinematics/scarakins.c M src/emc/kinematics/switchkins.c M src/emc/kinematics/three21kins.c M src/emc/kinematics/xyzac-trt-kins.c M src/emc/kinematics/xyzbc-trt-kins.c Log Message: ----------- kins: include switchkins.h as an exported header The kinematics modules are users of switchkins, not part of it, so they take the header the way any other user would. switchkins.c and switchkins_main.c keep the quoted form, being the source itself. Commit: b4b19d7b91a8e5e2c933c7719294aff91e97012d https://github.com/LinuxCNC/linuxcnc/commit/b4b19d7b91a8e5e2c933c7719294aff91e97012d Author: Luca Toniolo <107...@us...> Date: 2026-10-06 (Tue, 06 Oct 2026) Changed paths: M docs/src/hal/components.adoc M docs/src/motion/switchkins.adoc M src/Makefile M src/emc/kinematics/kins_util.c A src/emc/kinematics/switchkins_core.c A src/hal/components/switchkinscomp.comp A tests/kins-switchkins-core/README A tests/kins-switchkins-core/checkresult A tests/kins-switchkins-core/sim.hal A tests/kins-switchkins-core/test-ui.py A tests/kins-switchkins-core/test.ini A tests/kins-switchkins-core/test.sh A tests/kins-switchkins-core/tool.tbl Log Message: ----------- switchkins: a core module and a template for out-of-tree kinematics An out-of-tree module could not reach the switchkins implementation, so it reimplemented kinematicsSwitch() and the kinstype.is-N pins or did without. A realtime module cannot link a library, and including the implementation as source puts C files and an extra include path in every module build. switchkins_core is the implementation as a module of its own: switchkins.c and kins_util.c with no kinematics types. switchkins.c already exports its interface, since motion reaches the kinematics entry points in another module; kins_util.c now exports the identity kinematics and helpers kinematics.h declares. A module loaded after switchkins_core includes <switchkins.h>, registers its types and calls switchkinsInit() from EXTRA_SETUP(); motion finds the kinematics entry points in switchkins_core. The in-tree modules keep linking the objects, so their configs are unchanged. switchkinscomp.comp is the template, built in tree like any other component. tests/kins-switchkins-core loads it behind switchkins_core, homes, moves in both of its types, switches between them and has a type it does not provide refused. Renamed and built with halcompile out of tree it loads the same way. Commit: cdbf2339d966ac94be3c92ae654e69404d9b4aff https://github.com/LinuxCNC/linuxcnc/commit/cdbf2339d966ac94be3c92ae654e69404d9b4aff Author: Luca Toniolo <107...@us...> Date: 2026-10-06 (Tue, 06 Oct 2026) Changed paths: M src/emc/sai/saicanon.cc Log Message: ----------- saicanon: report a kinematics switch through the canon macro saicanon.cc printed SELECT_KINS_TYPE with a raw printf, beside the canon output on stdout. saicanon exists to echo the canonical commands, so it now reports through the same macro as the rest of the file, with a line number and the argument. Commit: 85f75dfde4314e83d695a8522f6136de8e9e35a4 https://github.com/LinuxCNC/linuxcnc/commit/85f75dfde4314e83d695a8522f6136de8e9e35a4 Author: Luca Toniolo <107...@us...> Date: 2026-10-11 (Sun, 11 Oct 2026) Changed paths: M docs/src/hal/components.adoc M docs/src/motion/switchkins.adoc M src/Makefile M src/emc/kinematics/5axiskins.c M src/emc/kinematics/genhexkins.c M src/emc/kinematics/genserkins.c M src/emc/kinematics/kins_util.c M src/emc/kinematics/pumakins.c M src/emc/kinematics/scarakins.c M src/emc/kinematics/switchkins.c M src/emc/kinematics/switchkins.h A src/emc/kinematics/switchkins_core.c A src/emc/kinematics/switchkins_main.c M src/emc/kinematics/three21kins.c M src/emc/kinematics/xyzac-trt-kins.c M src/emc/kinematics/xyzbc-trt-kins.c M src/emc/sai/saicanon.cc M src/hal/components/Submakefile M src/hal/components/millturn.comp A src/hal/components/switchkinscomp.comp M src/hal/components/xyzab_tdr_kins.comp M src/hal/components/xyzacb_trsrn.comp M src/hal/components/xyzbca_trsrn.comp A tests/kins-switchkins-core/README A tests/kins-switchkins-core/checkresult A tests/kins-switchkins-core/sim.hal A tests/kins-switchkins-core/test-ui.py A tests/kins-switchkins-core/test.ini A tests/kins-switchkins-core/test.sh A tests/kins-switchkins-core/tool.tbl Log Message: ----------- Merge pull request #4595 from grandixximo/switchkins-unify switchkins: one dispatch for kinematics modules, halcompile components and out-of-tree modules Compare: https://github.com/LinuxCNC/linuxcnc/compare/d6372e66e541...85f75dfde431 To unsubscribe from these emails, change your notification settings at https://github.com/LinuxCNC/linuxcnc/settings/notifications |
|
From: Luca T. <no...@gi...> - 2026-10-11 09:30:36
|
Branch: refs/heads/master Home: https://github.com/LinuxCNC/linuxcnc Commit: 31e48408576e985ea7fce0c6581d256831c77302 https://github.com/LinuxCNC/linuxcnc/commit/31e48408576e985ea7fce0c6581d256831c77302 Author: Luca Toniolo <107...@us...> Date: 2026-10-10 (Sat, 10 Oct 2026) Changed paths: A lib/python/axis_kinds.py M lib/python/preview_helpers.py M lib/python/rs274/glcanon.py M src/emc/rs274ngc/gcodemodule.cc M src/emc/rs274ngc/gcodemodule.hh M src/emc/usr_intf/gremlin/gremlin.py M src/emc/usr_intf/gremlin/qt5_graphics.py A tests/interp/preview-axis-type/README A tests/interp/preview-axis-type/expected A tests/interp/preview-axis-type/preview.py A tests/interp/preview-axis-type/test.ini A tests/interp/preview-axis-type/test.ngc A tests/interp/preview-axis-type/test.sh Log Message: ----------- preview: an axis converts by its [AXIS_<letter>] TYPE The preview canon and the DROs of AXIS, gremlin and qtvcp's graphics took A B C as the angles by index, so an ANGULAR V was drawn and shown divided by 25.4 and a LINEAR A was not converted. lib/python/axis_kinds.py is the Python side of src/emc/ini/axis_kinds.hh. gcode.parse reads the kinds from the INI and converts only the lengths. glcanon's DRO conversion and its 0..360 wrap follow them. tests/interp/preview-axis-type checks what the preview canon is handed. Commit: 97b4328c8c9f61647429e2a45aca645e8805440d https://github.com/LinuxCNC/linuxcnc/commit/97b4328c8c9f61647429e2a45aca645e8805440d Author: Luca Toniolo <107...@us...> Date: 2026-10-10 (Sat, 10 Oct 2026) Changed paths: M src/emc/usr_intf/axis/scripts/axis.py Log Message: ----------- axis: touch off and jogging by [AXIS_<letter>] TYPE Touch off, the teleop jog velocity and its maximum, and the jog step size now follow the type instead of the letter. The step size loop also used a stale index. Commit: 90047048b859784582c1c9b5b0ce2807ca5647d0 https://github.com/LinuxCNC/linuxcnc/commit/90047048b859784582c1c9b5b0ce2807ca5647d0 Author: Luca Toniolo <107...@us...> Date: 2026-10-10 (Sat, 10 Oct 2026) Changed paths: M lib/python/common/iniinfo.py M lib/python/qtvcp/qt_action.py M lib/python/qtvcp/widgets/action_button.py M lib/python/qtvcp/widgets/dro_widget.py M lib/python/qtvcp/widgets/tool_offsetview.py M share/qtvcp/screens/blender/blender_handler.py M share/qtvcp/screens/qt_cnc/qt_cnc_handler.py M share/qtvcp/screens/qt_cnc_800x600/qt_cnc_800x600_handler.py M share/qtvcp/screens/qt_cnc_9_axis/qt_cnc_9_axis_handler.py M share/qtvcp/screens/qtaxis/qtaxis_handler.py M share/qtvcp/screens/qtdragon/qtdragon_handler.py M share/qtvcp/screens/qtdragon_hd/qtdragon_hd_handler.py M share/qtvcp/screens/qtdragon_hd_vert/qtdragon_hd_vert_handler.py M share/qtvcp/screens/qtdragon_lathe/qtdragon_lathe_handler.py M share/qtvcp/screens/qtlathe/qtlathe_handler.py M share/qtvcp/screens/qttouchy/qttouchy_handler.py M share/qtvcp/screens/tester/tester_handler.py M share/qtvcp/screens/woodpecker/woodpecker_handler.py M share/qtvcp/screens/x1mill/x1mill_handler.py Log Message: ----------- qtvcp: units and jogging by [AXIS_<letter>] TYPE iniinfo's conversion vectors, the actions, the action button, the DRO, the tool table and the screens' keyboard jog took A B C as the angles. They now follow the type through INFO.AXIS_ANGULAR and INFO.is_angular(), and kb_jog() works out for itself whether its target is an angle. Commit: bac0d0037a49f4821f112c1c5dfc36deed29dfe5 https://github.com/LinuxCNC/linuxcnc/commit/bac0d0037a49f4821f112c1c5dfc36deed29dfe5 Author: Luca Toniolo <107...@us...> Date: 2026-10-10 (Sat, 10 Oct 2026) Changed paths: M lib/python/common/hal_glib.py M lib/python/gladevcp/combi_dro.py M lib/python/gladevcp/drowidget.py M lib/python/gladevcp/gtk_action.py M lib/python/gladevcp/offsetpage_widget.py M lib/python/gladevcp/offsetwidget.py M src/emc/usr_intf/gmoccapy/gmoccapy.py M src/emc/usr_intf/gscreen/emc_interface.py M src/emc/usr_intf/gscreen/gscreen.py M src/emc/usr_intf/pyui/commands.py M src/emc/usr_intf/touchy/touchy.py Log Message: ----------- gladevcp, gmoccapy, touchy, gscreen, pyui: units and jogging by TYPE The DRO and offset widgets, and the jog rates and increments of hal_glib, gmoccapy, touchy, gscreen and pyui, picked the angles by letter or index. They follow [AXIS_<letter>] TYPE now. gmoccapy no longer scales an angular jog by the display units, and the offset page no longer skips the G30 row where it meant to skip the angles. Commit: daaab4032ac8cf94ae0f3c6dbebd89cb1484f89c https://github.com/LinuxCNC/linuxcnc/commit/daaab4032ac8cf94ae0f3c6dbebd89cb1484f89c Author: Luca Toniolo <107...@us...> Date: 2026-10-10 (Sat, 10 Oct 2026) Changed paths: M docs/src/config/ini-config.adoc M src/emc/usr_intf/emcrsh.cc M src/emc/usr_intf/emcsh.cc M src/emc/usr_intf/shcom.cc M src/emc/usr_intf/shcom.hh Log Message: ----------- emcsh, linuxcncrsh: axis values by [AXIS_<letter>] TYPE The Tcl interface converted each value by its axis letter, and linuxcncrsh converted all nine offsets as lengths. shcom's convertAxisUnits() converts by type. Commit: d6372e66e541be980142e982c658766896ae30f7 https://github.com/LinuxCNC/linuxcnc/commit/d6372e66e541be980142e982c658766896ae30f7 Author: Luca Toniolo <107...@us...> Date: 2026-10-11 (Sun, 11 Oct 2026) Changed paths: M docs/src/config/ini-config.adoc A lib/python/axis_kinds.py M lib/python/common/hal_glib.py M lib/python/common/iniinfo.py M lib/python/gladevcp/combi_dro.py M lib/python/gladevcp/drowidget.py M lib/python/gladevcp/gtk_action.py M lib/python/gladevcp/offsetpage_widget.py M lib/python/gladevcp/offsetwidget.py M lib/python/preview_helpers.py M lib/python/qtvcp/qt_action.py M lib/python/qtvcp/widgets/action_button.py M lib/python/qtvcp/widgets/dro_widget.py M lib/python/qtvcp/widgets/tool_offsetview.py M lib/python/rs274/glcanon.py M share/qtvcp/screens/blender/blender_handler.py M share/qtvcp/screens/qt_cnc/qt_cnc_handler.py M share/qtvcp/screens/qt_cnc_800x600/qt_cnc_800x600_handler.py M share/qtvcp/screens/qt_cnc_9_axis/qt_cnc_9_axis_handler.py M share/qtvcp/screens/qtaxis/qtaxis_handler.py M share/qtvcp/screens/qtdragon/qtdragon_handler.py M share/qtvcp/screens/qtdragon_hd/qtdragon_hd_handler.py M share/qtvcp/screens/qtdragon_hd_vert/qtdragon_hd_vert_handler.py M share/qtvcp/screens/qtdragon_lathe/qtdragon_lathe_handler.py M share/qtvcp/screens/qtlathe/qtlathe_handler.py M share/qtvcp/screens/qttouchy/qttouchy_handler.py M share/qtvcp/screens/tester/tester_handler.py M share/qtvcp/screens/woodpecker/woodpecker_handler.py M share/qtvcp/screens/x1mill/x1mill_handler.py M src/emc/rs274ngc/gcodemodule.cc M src/emc/rs274ngc/gcodemodule.hh M src/emc/usr_intf/axis/scripts/axis.py M src/emc/usr_intf/emcrsh.cc M src/emc/usr_intf/emcsh.cc M src/emc/usr_intf/gmoccapy/gmoccapy.py M src/emc/usr_intf/gremlin/gremlin.py M src/emc/usr_intf/gremlin/qt5_graphics.py M src/emc/usr_intf/gscreen/emc_interface.py M src/emc/usr_intf/gscreen/gscreen.py M src/emc/usr_intf/pyui/commands.py M src/emc/usr_intf/shcom.cc M src/emc/usr_intf/shcom.hh M src/emc/usr_intf/touchy/touchy.py A tests/interp/preview-axis-type/README A tests/interp/preview-axis-type/expected A tests/interp/preview-axis-type/preview.py A tests/interp/preview-axis-type/test.ini A tests/interp/preview-axis-type/test.ngc A tests/interp/preview-axis-type/test.sh Log Message: ----------- Merge pull request #4594 from grandixximo/axis-type-gui GUIs and preview: an axis converts by its [AXIS_<letter>] TYPE Compare: https://github.com/LinuxCNC/linuxcnc/compare/bd9732fc10fe...d6372e66e541 To unsubscribe from these emails, change your notification settings at https://github.com/LinuxCNC/linuxcnc/settings/notifications |
|
From: Luca T. <no...@gi...> - 2026-10-11 09:28:28
|
Branch: refs/heads/master Home: https://github.com/LinuxCNC/linuxcnc Commit: f5311b8b070c9d58b46e9e0562126a86abce868c https://github.com/LinuxCNC/linuxcnc/commit/f5311b8b070c9d58b46e9e0562126a86abce868c Author: Luca Toniolo <107...@us...> Date: 2026-09-30 (Wed, 30 Sep 2026) Changed paths: M src/emc/kinematics/pumakins.c A tests/pumakins-unwrap/checkresult A tests/pumakins-unwrap/skip A tests/pumakins-unwrap/test.sh A tests/pumakins-unwrap/unwrapcheck.c A tests/pumakins-unwrap/unwrapcheck.hal Log Message: ----------- pumakins: keep joints 4 and 6 within a half turn of the previous value pumakinsInverse() took th4 and th6 straight from atan2(), which always lands in (-180, 180]. When the wrist crossed a half turn the returned joint jumped a full turn in one call, and every trajectory planner takes that jump at face value. Bring both joints back within a half turn of the joints passed in, using the angleDiff() helper the flag detection already uses. The test loads a checker after pumakins, like tests/kins-jacobian, that walks joints 4 and 6 across the +-180 boundary in both directions, hands each inverse the joints of the step before as motion does, and checks it returns the joints that made the pose. Fixes #4585. Commit: e93dfa5133987db220b066802e251dd5fb903486 https://github.com/LinuxCNC/linuxcnc/commit/e93dfa5133987db220b066802e251dd5fb903486 Author: Luca Toniolo <107...@us...> Date: 2026-09-30 (Wed, 30 Sep 2026) Changed paths: M tests/kins-frames/framecheck.c M tests/kins-frames/test.sh M tests/kins-jacobian/jaccheck.c M tests/kins-jacobian/test.sh Log Message: ----------- tests: kins-frames and kins-jacobian build their checker without sudo Both tests skip on a system build, and runtests sets SUDO only there, so ${SUDO} never expanded to anything. The checkers also returned -1, which the loader reports as EPERM; they now return -EINVAL for a bad parameter or a module that gives them nothing to check, and -ERANGE when a check fails. Commit: bd9732fc10fe6c7b92779baf13de29370a32a648 https://github.com/LinuxCNC/linuxcnc/commit/bd9732fc10fe6c7b92779baf13de29370a32a648 Author: Luca Toniolo <107...@us...> Date: 2026-10-11 (Sun, 11 Oct 2026) Changed paths: M src/emc/kinematics/pumakins.c M tests/kins-frames/framecheck.c M tests/kins-frames/test.sh M tests/kins-jacobian/jaccheck.c M tests/kins-jacobian/test.sh A tests/pumakins-unwrap/checkresult A tests/pumakins-unwrap/skip A tests/pumakins-unwrap/test.sh A tests/pumakins-unwrap/unwrapcheck.c A tests/pumakins-unwrap/unwrapcheck.hal Log Message: ----------- Merge pull request #4586 from grandixximo/pumakins-4585 pumakins: keep joints 4 and 6 within a half turn of the previous value Compare: https://github.com/LinuxCNC/linuxcnc/compare/e8a02761ceaf...bd9732fc10fe To unsubscribe from these emails, change your notification settings at https://github.com/LinuxCNC/linuxcnc/settings/notifications |
|
From: Rene H. <no...@gi...> - 2026-10-11 09:21:38
|
Branch: refs/heads/master Home: https://github.com/LinuxCNC/linuxcnc Commit: 96e06e2562bebb52c2c7b9cf19a8f819d6b440d8 https://github.com/LinuxCNC/linuxcnc/commit/96e06e2562bebb52c2c7b9cf19a8f819d6b440d8 Author: Rene Hopf <ren...@ma...> Date: 2026-10-03 (Sat, 03 Oct 2026) Changed paths: M docs/src/config/core-components.adoc M docs/src/hal/basic-hal.adoc M docs/src/hal/tools.adoc M docs/src/hal/tutorial.adoc M docs/src/man/man9/classicladder.9.adoc M docs/src/man/man9/encoder.9.adoc M docs/src/man/man9/motion.9.adoc M lib/python/gladevcp/builtin-panels/gtk_mesa_tests/gtk_mesa_tests.glade M lib/python/gladevcp/builtin-panels/gtk_mesa_tests/gtk_mesa_tests.py M scripts/hal-histogram M src/hal/hal_lib.c M src/hal/hal_priv.h M src/hal/utils/halcmd_commands.cc M src/hal/utils/halrmt.cc M tests/halcompile/personalities_mod/4count_2pers.expected M tests/halcompile/personalities_mod/4names_2pers.expected M tests/halmodule/halquery/expected M tests/threads.1/checkresult Log Message: ----------- change time pins to float Commit: 22bbf38e8f48e42072fe9035d6dd6f326838f2f6 https://github.com/LinuxCNC/linuxcnc/commit/22bbf38e8f48e42072fe9035d6dd6f326838f2f6 Author: Rene Hopf <ren...@ma...> Date: 2026-10-03 (Sat, 03 Oct 2026) Changed paths: M docs/src/config/core-components.adoc M docs/src/drivers/hal_pi_gpio.adoc M docs/src/hal/basic-hal.adoc M docs/src/hal/tutorial.adoc M docs/src/man/man9/classicladder.9.adoc M docs/src/man/man9/encoder.9.adoc M docs/src/man/man9/motion.9.adoc M lib/python/gladevcp/builtin-panels/gtk_mesa_tests/gtk_mesa_tests.py M src/hal/hal_lib.c M src/hal/hal_priv.h M tests/alias.0/expected M tests/halcompile/personalities_mod/4count_2pers.expected M tests/halcompile/personalities_mod/4names_2pers.expected M tests/halmodule/halquery/expected M tests/halmodule/halquery/halquerytest.py M tests/loadrt.1/expected M tests/loadrt.2/expected M tests/save.0/expected M tests/twopass-personality/expected M tests/twopass/expected Log Message: ----------- change tmax from a param to a pin The .time runtime value was already a pin while .tmax was a HAL_RW parameter. Make .tmax an ordinary pin too, so both can be netted to signals and read with the usual pin tooling. It is created HAL_IO rather than HAL_OUT so that it stays writable, as HAL_RW was: 'setp <funct>.tmax 0' still resets the recorded maximum, and sim_pin (which accepts IN and I/O pins) still works on it. .tmax-increased remains a parameter. free_funct_struct() cleared funct->runtime but not funct->maxtime, since only pin refs need clearing before the struct is reused; now that maxtime is a pin it has to be cleared too, otherwise halpr_pin_new() reports "already-initialized memory". free_thread_struct() cleared none of its pin refs, so clear runtime, maxtime and threadbeat there as well. Note that plain 'halcmd save' no longer emits a setp line for .tmax, because it only saves parameters; 'save allu' covers unconnected pins. Co-Authored-By: Claude Opus 5 <no...@an...> Commit: 19d59b2567e79ab4d4fe4902613943caaea0feb4 https://github.com/LinuxCNC/linuxcnc/commit/19d59b2567e79ab4d4fe4902613943caaea0feb4 Author: Rene Hopf <ren...@ma...> Date: 2026-10-03 (Sat, 03 Oct 2026) Changed paths: M docs/src/drivers/hal_pi_gpio.adoc M docs/src/hal/basic-hal.adoc M docs/src/hal/tutorial.adoc M docs/src/man/man9/motion.9.adoc M src/hal/hal_lib.c M src/hal/hal_priv.h M src/hal/utils/halcompile.g M tests/alias.0/expected M tests/halcompile/halname/test.sh M tests/halcompile/personalities_mod/4count_2pers.expected M tests/halcompile/personalities_mod/4names_2pers.expected M tests/halmodule/halquery/expected M tests/halmodule/halquery/halquerytest.py M tests/halmodule/halquery/test.hal M tests/loadrt.1/expected M tests/loadrt.2/expected M tests/twopass-personality/expected M tests/twopass/expected Log Message: ----------- change tmax-increased from a param to a pin With .time and .tmax already pins, make .tmax-increased one too, so a HAL function brings three pins and no parameters with it. It is HAL_OUT, the pin equivalent of the HAL_RO it replaces: only the RT code writes it. free_funct_struct() must clear funct->maxtime_increased for the same reason it clears the other two: halpr_pin_new() reports "already-initialized memory" when a struct comes back off the free list with a non-NULL pin ref. Tests that list parameters had to be updated, and tests/save.0 loses the 'setp <funct>.tmax' lines because plain 'save' only writes parameters. halquery now also loads 'invert', because and2/or2/xor2 have no parameters of their own and the query API's parameter paths would otherwise go untested. Co-Authored-By: Claude Opus 5 <no...@an...> Commit: e8a02761ceaf0a01add0e0b090e9cf4402c3f748 https://github.com/LinuxCNC/linuxcnc/commit/e8a02761ceaf0a01add0e0b090e9cf4402c3f748 Author: Rene Hopf <ren...@ma...> Date: 2026-10-11 (Sun, 11 Oct 2026) Changed paths: M docs/src/config/core-components.adoc M docs/src/drivers/hal_pi_gpio.adoc M docs/src/hal/basic-hal.adoc M docs/src/hal/tools.adoc M docs/src/hal/tutorial.adoc M docs/src/man/man9/classicladder.9.adoc M docs/src/man/man9/encoder.9.adoc M docs/src/man/man9/motion.9.adoc M lib/python/gladevcp/builtin-panels/gtk_mesa_tests/gtk_mesa_tests.glade M lib/python/gladevcp/builtin-panels/gtk_mesa_tests/gtk_mesa_tests.py M scripts/hal-histogram M src/hal/hal_lib.c M src/hal/hal_priv.h M src/hal/utils/halcmd_commands.cc M src/hal/utils/halcompile.g M src/hal/utils/halrmt.cc M tests/alias.0/expected M tests/halcompile/halname/test.sh M tests/halcompile/personalities_mod/4count_2pers.expected M tests/halcompile/personalities_mod/4names_2pers.expected M tests/halmodule/halquery/expected M tests/halmodule/halquery/halquerytest.py M tests/halmodule/halquery/test.hal M tests/loadrt.1/expected M tests/loadrt.2/expected M tests/save.0/expected M tests/threads.1/checkresult M tests/twopass-personality/expected M tests/twopass/expected Log Message: ----------- Merge pull request #4518 from rene-dev/time-float change time pins to float Compare: https://github.com/LinuxCNC/linuxcnc/compare/6fa6e06d13ac...e8a02761ceaf To unsubscribe from these emails, change your notification settings at https://github.com/LinuxCNC/linuxcnc/settings/notifications |