diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..93ffe51 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,303 @@ +# Changelog + +## Changes in release 2.8.20 + +Fix missing initialization of `inTerminator` and `outTerminator`. +Thanks to Krisztián Löki. + +New checksums `%` and `%`. +Thanks to Marcio Paduan Donadio. + +Make timestamp output in error and debug messages optional with new +iocsh variable `streamMsgTimeStamped`. Default is 1. + +Reduce number of duplicate error messages. Dead time for repeated messages +is configurable with new iocsh variable `streamErrorDeadTime`. +Thanks to Dominic Oram. + +Shifted some noisy debug messages to `streamDebug` level 2. + +In `STREAM_PROTOCOL_PATH`, allow both `:` and `;` separators on all +operating systems to make startup scripts OS independent. +On Windows however, an initial single letter followed by a `:` is detected +as a drive letter. Thus single letter directories must be separated with +`;` or followed by `\` or `/` on Windows. + +Allow absolute path protocol files. Those will not use +`STREAM_PROTOCOL_PATH`. +Changed the default search path from `"."` to `NULL`. + +Only poll for `I/O Intr` records while `interruptAccept` is true, +in particular not between `iocPause` and `iocRun`. + +Added this change log and a document about contributing to StreamDevice. + +## Changes in release 2.8.19 + +Make colorization of error and debug messages optional with new +iocsh variable `streamDebugColored`. Defaults to 1 when output is a tty +and 0 otherwise. + +## Changes in release 2.8.18 + +Another format string fix for VxWorks in checksum converter. + +## Changes in release 2.8.17 + +Fix format strings for VxWorks 6.9 in checksum converter. + +Fix some compiler warnings on Windows. + +Fix some missing header files installations. + +## Changes in release 2.8.16 + +Drop support of upper level `configure/` directory for improved +compatibility with SynApps. + +Fix problem with extra spaces after protocol name in record links. + +Make version string generation more robust. + +## Changes in release 2.8.15 + +Do not overwrite `HOST_OPT` flag. + +Fix version string generation for zip downloads. + +On Windows use `;` and `\` in `STREAM_PROTOCOL_PATH`. +(Was not the case before due to typo in macro name.) + +Link streamApp with `seq` and `pv` libraries when `SNCSEQ` is defined in +RELEASE file. + +## Changes in release 2.8.14 + +Fix version string generation from git tags. + +## Changes in release 2.8.13 + +Fix bug with integer datatype handling in redirectons. + +## Changes in release 2.8.12 + +Apply GPL-3.0. + +## Changes in release 2.8.11 + +Fix buffer overrun. +Thanks to Garth Brown and Bruce Hill. + +Fix bug in 64 bit data type handling in array records (`aai`, `aao`, +`waveform`). +Thanks to Andrew Johnson. + +Fix Windows linker problem. +Thanks to Freddie Akeroyd. + +Allow `(,)` inside protocol parameters. Limitation: Parenthesis must be in +matching pairs. Commas within inner parenthesis are consideres part of the +argument. Example: `protocol(arg1, (arg2, still arg 2), arg3)`. + +New checksums `%`, `%`, `%`, `%`, +`%`, `%`. +Thanks to Mark Davis. + +Some error message cleanup. + +## Changes in release 2.8.10 + +Fixes for Windows / Visual Studio 2010. +Thanks to Freddie Akeroyd. + +Fix infinite loop in `I/O Intr` scanned records. + +Enable error messages by default and always show error messages too when +debug messages are enabled. + +Make sure any console output from StreamDevice can be redirected. + +Fix some problems when building for old EPICS R3.13. + +## Changes in release 2.8.9 + +Leave `asynTraceMask` alone. Before, streamDevice had set `setTraceMask` +to 0 initially. + +Link with `sscan` module if `SSCAN` is defined in RELEASE file because the +`calc` module may need it. + +Fix in regsub converter: Avoid infinite loop if an empty string is matched. +Add support for toupper/tolower to regsub converter. + +Fix build problem observed on MacOS related to clash between `wait()` +system function and the StreamDevice `wait` command. + +Allow `%%` in addition to `\%` to escape `%` in protocols (compatibility +with `printf`/`scanf`). + +Have separate dbd file for applications without scalcout support built in. + +Improved compatibility with SynApps. (fix of the attempt in 2.8.6) + +## Changes in release 2.8.8 + +Fix problem with `in` command hanging forever if it is the the first +command of the protocol and the device is offline. + +## Changes in release 2.8.7 + +Enable colored error/debug output on Windows. + +Changed error/debug hex output highlight from fat to inverse. + +Fix build problem on Windows. + +## Changes in release 2.8.6 + +Improved compatibility with SynApps. + +Fix redirection to records with names not starting with a letter or +underscore. + +### Fixes/improvements for `mbbo` device support: + +Use `.MASK` and `.SHFT` fields even if no `xxVL` field is defined +(and thus `.VAL` is used instead of `.RVAL`). + +Bugfix: Set `mbbo` to unknown state `0xffff` if in readback no state +matches. + +Bugfix: Use defined state alarms when `mbbo` is updated by `@init` handler. + +## Changes in release 2.8.5 + +A `"\?"` at the end of an input format now matches an empty string. +Used to do so unintendedly in earlier versions but had been changed. + +## Changes in release 2.8.4 + +Bugfix: After `@init` had been triggered with "magic value" 2 in `.PROC` +field, reset the field to 0. + +## Changes in release 2.8.3 + +Increase limits on filename, protocolname, busname in record links. + +Bugfix: Fix typo calcout device support that prevented compiling it. + +## Changes in release 2.8.2 + +Bugfix: Fix string termination reading into char array records (`waveform`, +`aai`, `aao`, `lsi`, `lso`). + +## Changes in release 2.8.1 + +Allow empty parameter list `()` in record links. + +## Changes between 2.7 and 2.8.0 + +### Build system + +Drop support for (buggy) cygnus-2.7.2 gcc (as used in some old cygwin +version). + +Add standard EPICS App build system (`configure/`). + +Some re-ordering of directories. +When upgrading from 2.7 or earlier to 2.8, better start with a fresh +source directory to avoid problems with files that have moved. + +### New Features + +Support for 64 bit integers. This affects some conversions (e.g. in `ai` +and `ao` records). + +Device support for new record types `int64in`, `int64out`, `lsi` and `lso` +added. + +Support for new `INT64` and `UINT64` types in `aai`, `aao` and `waveform` +records. + +Allow spaces in protocol parameter list in record link. +One space after the opening `(`, before and after the separating `,` and +before the closing `)` ignored. More spaces are part of the parameter. + +String format `%s` can now pad with 0-bytes instead of spaces using the +`0` flag. + +New checksums `%` and `%`. + +Properly distinguish beween signed and unsigned integers, e.g. when +converting to double. +Allow signed enums to do this: `%#{backwards=-1|stop=0|forwards=1}`. + +#### New connection handling + +Run `@init` handler each time the device (re-)connects +(as long as asynDriver detects connection changes), also at each `iocRun` +(after being paused with `iocPause`), and after each `streamReload`. + +Also run `@init` of a record when the "magic value" 2 is written to the +`.PROC` field or when new `streamReinitRecord` shell function is called. + +Trigger monitors when `@init` updates output records (after the intial run +in `iocInit`). + +Use `"COMM"` error code in `.STAT` when device is disconnected. + +If write fails because device has disconnected, try to re-connect and re-do +write once. + +### Bug fixes + +Fix parser bug when command reference was followed by `}` without `;`. + +Fix potential buffer overrun during `streamReload`. +After `streamReload`, properly delete handlers and variables that do not +exist any longer. + +Fix for waveforms of unsigned integers. + +Several Windows related fixes and support building shared libraries on +Windows. + +Fix C++11 warnings. + +Check formatting of `exec` command for errors. + +Fix bug in `dbior` output. + +Fix BCD `%D` format and allow negative values. + +Fix signed hex and octal formats. + +Fix in regsub: Do not run regsub again on substituted string. + +### Shell functions + +New functions `streamReportRecord` and `streamSetLogfile`. + +Support output redirection to file of stream shell functions +and protocol dump via `dbior`. + +### Error and debug output + +Cleanup some debug and error messages. + +Hex bytes in debug/error output are now highlighted. + +`StreamError` can now be set before `iocInit`. + +Avoid repeating error messages. +Thanks to Ben Franksen. + +### Documentation + +HTML files converted to HTML 5. + +Update and improve several chapters. + +## Changes in releases up to 2.7.14 + +Not available. See git log.