Releases: becls/swish
Swish v2.8.1
Swish v2.8.0
New
- Added
http:valid-path?
predicate. - Added
validate-path
tohttp:options
. - Added examples.
Bug Fixes
- Fixed a bug in
http:eval-dynamic-page
that caused "Exception: invalid context for definition (define-syntax find-param ...)"
Updates
- Updated to SQLite 3.45.3
path-combine
preserves directory separators present in its arguments, but avoids adding extra directory separators, e.g., when a constituent begins with a directory separator. It may also allocate less when called with more than two arguments.
Swish v2.6.0
New
- Enabled use with Chez Scheme 10.0
- Enabled use with arm64osx, tarm64osx, arm64le, and tarm64le machine types
- Added
db:start
- Added end timestamp to the child view
- Added
not-reached
macro which omits source when profiling - Added
port->notify-port
for TCP ports - Added
tcp-nodelay
- WebSockets
- Added error code 1009 when exceeding size limit
- Added error code 1011 when reader raises an exception
- Improved performance by enabling
tcp-nodelay
- Improved performance by masking in place rather than copying the payload using optimized primitives
- Improved performance by reusing the codec buffer if possible
- Improved performance by sending the header and payload with a single call
osi_tcp_write2
- Added
get-bytevector-exactly-n
- Added
define-syntactic-monad
- Added
natural-string<?
andnatural-string-ci<?
- Added
osi_is_service
- Added
fold-files
andfilter-files
- Added
--prelude
and--prelude-file
toswish-build
- Added
swish-test --progress suite-verbose
- Improved performance of JSON reading and writing
- Added
json:pretty
,json:key<?
, andjson:custom-write
- Added parallel library including
parallel
,parallel!
,parallel:execute
,parallel:execute!
,parallel:for-each
,parallel:map
, andparallel:vector-map
- Added support for procedural
process-trap-exit
handler
Bug Fixes
- Fixed writing to closed stderr on exception
- Fixed clearing unset signal handler
- Clarified scopes for define-options sub-forms
- HTTP and WebSocket code now closes ports rather than leaving them to the collector
- Fixed console-event-handler retaining objects indefinitely when attempting to suppress duplicate stack dumps
- Fixed leak in sqlite:marshal-bindings where an out-of-range value may cause the Scheme runtime to longjmp beyond Swish's error handling
- Fixed premature closing of WebSocket while reading large payloads
- Fixed usage of
get-bytevector-n
- Fixed to release profile counts using
profile-release-counter
introduced in Chez Scheme 9.5.1 - Fixed destination for annotated files when profiling
- Fixed
swish-build -s
to resolve<source>
files using thesource-directories
specified - Fixed potential
watch-path
crash - Fixed typical use-cases for Swish scripts under Cygwin
Updates
- Updated to SQLite 3.45.1
- Updated to libuv 1.48.0
- Require Chez Scheme 9.6.4 or later
- Eliminated dependency on jQuery
- Updated profile coverage report
- added legend
- added line numbers
- changed DOCTYPE to HTML5
- no longer colors leading whitespace
- Updated
html5
form to includelang="en"
if not otherwise specified - Updated
console-event-handler
to elide specific<child-end>
messages
Swish v2.4.0
2022-06-09 Version 2.4.0 (Stable)
New
- Breaking change: swish-test no longer adds an automatic .ms suffix when checking whether a specified file exists.
- Breaking change: swish-test exits with a non-zero exit status when processing results that are incomplete or contain failed tests, skipped tests, or no passing tests. The aim is for
--harvest
or--load-results
runs to generate a non-zero exit status when the original test run that produced those results would have done so. - Improved performance of mon and pcb records in hashtables by implementing custom record-type-hash-procedure for each.
- Added
os-pid
,current-memory-bytes
,maximum-memory-bytes
,os-free-memory
, andos-total-memory
to statistics log. - Added
osi_get_home_directory
to support limited tilde expansion for filesystem paths. - Added
default-timeout
andscale-timeout
to testing, the latter respecting an optionalTIMEOUT_SCALE_FACTOR
environment variable. - Added
LD
compile option to configure script. - swish-test:
- Preserves stdout and stderr output
- Preserves
--harvest
suite order - Added
--rerun
option - Added "Download Data" link to HTML test report
- Changed
throw
toraise
forhttp-request-timeout
errors.
Bug Fixes
- mat load-results now preserves result order
Updates
- Updated to SQLite 3.38.5
- Updated to libuv 1.44.1
- Require Chez Scheme 9.5.6 or later
Swish v2.2.0
2021-05-18 Version 2.2.0 (Stable)
New
- Improved database log performance:
- Added
osi_bulk_execute
andsqlite:bulk-execute
to support faster bulk insert. - Changed
db
gen-server to flush the accumulateddb:log
entries viasqlite:bulk-execute
for better performance. - Added
sqlite:marshal-bindings
andsqlite:unmarshal-bindings
. - Added
osi_get_bindings
andsqlite:get-bindings
. - Extended
sqlite:execute
to accept as bindings: a list, a vector, or a marshaled bindings record instance.
- Added
- Provided more control over database tuning parameters:
- Exposed
create-prune-on-insert-trigger
. - Added
make-swish-event-logger
to let applications tune prune triggers for the Swish event tables. - Added
db:options
argument todb:start&link
andlog-db:start&link
, which allows tuning:commit-limit
commit-delay
cache-timeout
- Added
db:expire-cache
.
- Exposed
osi_interrupt_database
andsqlite:interrupt
now return a boolean indicating the database's busy state.- Added
log-db:event-logger
that supports thesetup
andlog
fields of<event-logger>
, but also supports atolerate-fault?
predicate. - Added an optional
endure?
argument toevent-mgr:set-log-handler
to let applications respond flexibly to log-handler faults. - Added
define-tuple
support for(type is?)
that expands into(lambda (x) (type is? x))
just as(type field)
expands into(lambda (x) (type field x))
. - Added
ct:join
andct:string-append
, which do their work at expand time if possible. - Added to the meta-data collected by automated tests:
- data from
get-uname
- start and end timestamp for each test
- user annotations logged via
mat:add-annotation!
- data from
- Added
--toolprefix
option to./configure
to simplify cross-compilation.
Bug Fixes
- Fixed a websocket bug that reported unexpected end-of-file when a 64-bit payload length crosses an internal buffer boundary.
- Improved database gen-server's fault tolerance by using
monitor
in place oflink
and by adaptingsupervisor
protocol on shutdown. - Fixed a minor performance bug that made some hashtables in the
http
library resort to linear search. - Fixed an obscure bug in
receive
when Swish is compiled withcp0
disabled. Normal builds leavecp0
enabled, butmake coverage
disablescp0
.
Updates
- Updated to SQLite 3.34.1
- Updated to libuv 1.41.0
Swish v2.0.2
Bug Fixes
Fixed a performance bug. When installing the values of inherited parameters, spawn
and spawn&link
called parameter filters, if any, when they should not have, since those values were already filtered when the parameters were set. This was particularly significant for the inherited app:path
parameter, where the filter makes an expensive call to get-real-path
.
Swish v2.0.1
Bug Fix
Fixed a bug in receive
introduced in 2f16c0f that could cause a process to wait for the full waketime
, which could be infinite, for a message that is sent just after receive
has picked a queue to sleep on. This manifested as strange behavior where a gen-server:call
to a trivial gen-server could hang indefinitely if the timeout was specified as infinity
or could receive the message just as the call would have timed out, despite the gen-server replying immediately.
Swish v2.0.0
Swish 2.0.0