Skip to content

Version 3.7.0-beta.2

Pre-release
Pre-release

Choose a tag to compare

@chrishamm chrishamm released this 28 Jul 14:27

New features:

  • Added optional NativeAOT builds via the AotPublish property (off by default), a container to cross-build for linux-arm, linux-arm64 and linux-x64, and a --aot packager option that drops the duetruntime dependency
  • Added SetWifiCountry to set the WiFi regulatory domain
  • Added optional key path filters to GetObjectModel
  • Software upgrade progress is reported during M997 S2, including installs from .deb or dsf-update.zip files; DuetPiManagementPlugin reports the configured package feed as plugin data
  • Added IpcJsonBufferSize setting to configure the IPC receive chunk size
  • Added README files to the NuGet packages

API changes:

  • Bumped the IPC protocol version to 13
  • Removed SetObjectModel, LockObjectModel and UnlockObjectModel; PatchObjectModel is 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 ConfigureAwait to further public APIs
  • DuetSharedLibrary no longer ships XML documentation

Object model changes:

  • Added boards[].timeout, move.currentMove.filePosition and state.restorePoints[].gCommandNumber
  • Added sbc.upgrade with message and an optional progress value while a software upgrade is running

Changed behaviour:

  • Replaced ImageSharp with 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.Gpio and System.Device.Spi with native drivers
  • Greatly reduced GC pressure and IPC allocations across DCS (chunked JSON reads, pooled buffers, gathered writes, source-generated log messages) and DCS now runs with SustainedLowLatency
  • 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 DuetWebServer to 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 S2 and system package installations run in their own transient systemd units (dsf-update and dsf-package) so they are no longer terminated when the upgrade replaces the services that started them; systemctl status dsf-update reports whether one is still running
  • Removed the KillMode override from duetpluginservice-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
  • M997 could be cancelled prematurely returning an invalid error message
  • M997 S2 reported success when the update had failed
  • M997 S2 was silently ignored when DuetPiManagementPlugin was not running
  • M997 S0:2 was not handled by DuetPiManagementPlugin
  • install-dsf.sh was invoked by name although it is not on PATH
  • M999 replies were lost because DCS stopped 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 CodeInterception waiting for a pulse from a terminated processor
  • Truncated icon thumbnails yielded garbage pixels instead of being rejected
  • PluginManager re-serialized plugin data instead of printing it raw
  • CodeStream was packaged into duetruntime instead of duettools
  • 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 9 support)
  • Completely overhauled DCS architecture using proper hosted services (dependency injection)
  • Migrated all projects to System.CommandLine for better parameter parsing
  • Added support for SBC mode over USB; 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 ADS131 temperature 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_PATH environment variable to override the socket location
  • Added a way to flag when plugins have fully started (NotifyPluginStarted)
  • Plugin www files 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 bedHeaterMapping and chamberHeaterMapping
  • Added pressAdv; deprecated pressureAdvance
  • Made move.extruders[].rawPosition obsolete and removed obsolete keys from move.shaping

Changed behaviour:

  • Increased CPU and IO scheduling priority for DCS
  • Changed the DuetAPIClient namespace layout and added ConfigureAsync to all public APIs (source-breaking for API consumers)
  • More robust postinst scripts; install scripts no longer prompt for a password via systemctl; explicit dsf user group assignment on upgrade
  • rr_model/M409 omit null values unless F"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 S1 for Ethernet profiles/NetworkManager, M586 P0 Rnnn, M589, resume after pause, M226 pause offsets, and an M0-at-end-of-file regression
  • Numerous plugin-service stability and startup fixes