Version 3.7.0-beta.2
Pre-release
Pre-release
New features:
- Added optional
NativeAOTbuilds via theAotPublishproperty (off by default), a container to cross-build forlinux-arm,linux-arm64andlinux-x64, and a--aotpackager option that drops theduetruntimedependency - Added
SetWifiCountryto set the WiFi regulatory domain - Added optional key path filters to
GetObjectModel - Software upgrade progress is reported during
M997 S2, including installs from.debordsf-update.zipfiles;DuetPiManagementPluginreports the configured package feed as plugin data - Added
IpcJsonBufferSizesetting to configure the IPC receive chunk size - Added
READMEfiles to the NuGet packages
API changes:
- Bumped the IPC protocol version to 13
- Removed
SetObjectModel,LockObjectModelandUnlockObjectModel;PatchObjectModelis now the only object model writer and locks itself internally - Added a generated model descriptor API for reflection-free property enumeration and get/set by name
- Added
ConfigureAwaitto further public APIs DuetSharedLibraryno longer ships XML documentation
Object model changes:
- Added
boards[].timeout,move.currentMove.filePositionandstate.restorePoints[].gCommandNumber - Added
sbc.upgradewithmessageand an optionalprogressvalue while a software upgrade is running
Changed behaviour:
- Replaced
ImageSharpwith an internal PNG encoder because it requires a paid license key as of v4.0; icon pixel data is only decoded when the thumbnail content is requested - Replaced
System.Device.GpioandSystem.Device.Spiwith native drivers - Greatly reduced GC pressure and IPC allocations across
DCS(chunked JSON reads, pooled buffers, gathered writes, source-generated log messages) andDCSnow runs withSustainedLowLatency - Reduced reflection use across the object model pipeline
- Max code buffer space per channel is computed dynamically, which greatly improves throughput when simulating files with only one motion system
- Migrated
DuetWebServerto minimal APIs and the slim host builder - Regex settings are plain patterns now (existing configuration files are migrated) and configured lists replace the defaults instead of extending them
- Removed
SocketPollInterval; dead peers are detected when a new plugin service registers - Network protocol initialization runs in parallel and no longer aborts plugin start-up when one service is unavailable
M997 S2and system package installations run in their own transient systemd units (dsf-updateanddsf-package) so they are no longer terminated when the upgrade replaces the services that started them;systemctl status dsf-updatereports whether one is still running- Removed the
KillModeoverride fromduetpluginservice-root, so child processes started by root plugins are stopped together with the service; plugins that need work to outlive a service restart must run it in their own systemd unit - Improved error messages in USB mode, added a delay between USB reconnect attempts, and the transfer phase is reported on SPI disconnect
- More robust pre/post install scripts when systemd is not running
- Updated NuGet dependencies to the latest versions
Bug fixes:
- Fixed a deadlock in the plugin subsystem
- Fixed IAP updates over USB and bad responses when exchanging headers
M997could be cancelled prematurely returning an invalid error messageM997 S2reported success when the update had failedM997 S2was silently ignored whenDuetPiManagementPluginwas not runningM997 S0:2was not handled byDuetPiManagementPlugininstall-dsf.shwas invoked by name although it is not onPATHM999replies were lost becauseDCSstopped before they reached the clients- Fixed exceptions being sent as success responses in the code stream and on malformed JSON
- Fixed expression evaluation of enums to use their JSON name
- Fixed
CodeInterceptionwaiting for a pulse from a terminated processor - Truncated icon thumbnails yielded garbage pixels instead of being rejected
PluginManagerre-serialized plugin data instead of printing it rawCodeStreamwas packaged intoduetruntimeinstead ofduettools- A locally modified configuration file prevented unattended upgrades of the DSF packages
- Leftover plugin processes were killed by PID after the process had already exited
- Improved logging behaviour on failed start-ups
Version 3.7.0-beta.1 (changes since 3.6.3)
New features:
- Migrated all projects to
.NET 10(dropped.NET 9support) - Completely overhauled
DCSarchitecture using proper hosted services (dependency injection) - Migrated all projects to
System.CommandLinefor better parameter parsing - Added support for
SBCmode overUSB; communication method (USB/SPI) is now reported via the object model - Added support for
M581.1(event triggers) with SBC-side fields - Added support for
M36.2 - Added support for explicit line numbers
- Added support for the
ADS131temperature sensor - Improved pause handling with two motion systems
- Greatly improved code and expression parsers, including decimal-place support when evaluating expressions (#192)
- Secure delete request forwarded to
RRF - Added
DSF_SOCKET_PATHenvironment variable to override the socket location - Added a way to flag when plugins have fully started (
NotifyPluginStarted) - Plugin
wwwfiles are now installed via symlinks - Plugin IDs are now case-insensitive
Object model changes:
- Added
inputs[].currentFile,move.axes[].stepPos,job.timesLeft.toPause - Added new feedforward fields and position reporting for pulsed filament monitors
- Added
bedHeaterMappingandchamberHeaterMapping - Added
pressAdv; deprecatedpressureAdvance - Made
move.extruders[].rawPositionobsolete and removed obsolete keys frommove.shaping
Changed behaviour:
- Increased CPU and IO scheduling priority for
DCS - Changed the
DuetAPIClientnamespace layout and addedConfigureAsyncto all public APIs (source-breaking for API consumers) - More robust postinst scripts; install scripts no longer prompt for a password via
systemctl; explicitdsfuser group assignment on upgrade rr_model/M409omit null values unlessF"n"is given
Bug fixes:
- Fixed axis re-racking in certain situations, UTF-8 BOM handling in footers, and thumbnail offset/overflow bugs
- Fixed
M552 S1for Ethernet profiles/NetworkManager,M586 P0 Rnnn,M589, resume after pause,M226pause offsets, and anM0-at-end-of-file regression - Numerous plugin-service stability and startup fixes