- Fix a bug in
http:parse-requestthat converted+to space within the path component of a URI.
- Added
http:valid-path?predicate. - Added
validate-pathtohttp:options. - Added examples.
- Fix a bug in
http:eval-dynamic-pagethat caused "Exception: invalid context for definition (define-syntax find-param ...)"
- Updated to SQLite 3.45.3
path-combinepreserves 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.
- 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-reachedmacro which omits source when profiling - Added
port->notify-portfor 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-filesandfilter-files - Added
--preludeand--prelude-filetoswish-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-exithandler
- 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-counterintroduced in Chez Scheme 9.5.1 - Fixed destination for annotated files when profiling
- Fixed
swish-build -sto resolve<source>files using thesource-directoriesspecified - Fixed potential
watch-pathcrash - Fixed typical use-cases for Swish scripts under Cygwin
- 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
html5form to includelang="en"if not otherwise specified - Updated
console-event-handlerto elide specific<child-end>messages
- 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
--harvestor--load-resultsruns 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-memoryto statistics log. - Added
osi_get_home_directoryto support limited tilde expansion for filesystem paths. - Added
default-timeoutandscale-timeoutto testing, the latter respecting an optionalTIMEOUT_SCALE_FACTORenvironment variable. - Added
LDcompile option to configure script. - swish-test:
- Preserves stdout and stderr output
- Preserves
--harvestsuite order - Added
--rerunoption - Added "Download Data" link to HTML test report
- Changed
throwtoraiseforhttp-request-timeouterrors.
- mat load-results now preserves result order
- Updated to SQLite 3.38.5
- Updated to libuv 1.44.1
- Require Chez Scheme 9.5.6 or later
- Improved database log performance:
- Added
osi_bulk_executeandsqlite:bulk-executeto support faster bulk insert. - Changed
dbgen-server to flush the accumulateddb:logentries viasqlite:bulk-executefor better performance. - Added
sqlite:marshal-bindingsandsqlite:unmarshal-bindings. - Added
osi_get_bindingsandsqlite:get-bindings. - Extended
sqlite:executeto 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-loggerto let applications tune prune triggers for the Swish event tables. - Added
db:optionsargument todb:start&linkandlog-db:start&link, which allows tuning:commit-limitcommit-delaycache-timeout
- Added
db:expire-cache.
- Exposed
osi_interrupt_databaseandsqlite:interruptnow return a boolean indicating the database's busy state.- Added
log-db:event-loggerthat supports thesetupandlogfields of<event-logger>, but also supports atolerate-fault?predicate. - Added an optional
endure?argument toevent-mgr:set-log-handlerto let applications respond flexibly to log-handler faults. - Added
define-tuplesupport for(type is?)that expands into(lambda (x) (type is? x))just as(type field)expands into(lambda (x) (type field x)). - Added
ct:joinandct: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
--toolprefixoption to./configureto simplify cross-compilation.
- 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
monitorin place oflinkand by adaptingsupervisorprotocol on shutdown. - Fixed a minor performance bug that made some hashtables in the
httplibrary resort to linear search. - Fixed an obscure bug in
receivewhen Swish is compiled withcp0disabled. Normal builds leavecp0enabled, butmake coveragedisablescp0.
- Updated to SQLite 3.34.1
- Updated to libuv 1.41.0
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.
Fixed a bug in $receive 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.
The change in 2f16c0f2f2c1246193368680682a68cc6dfcae46 allowed a sequence of events where:
- one process calls
$receive - no message is ready, so we enable interrupts
- we set pcb fields depending on waketime, then call
yieldwith a destination queue yielddoes an interrupt check on entry and we happen to context switch@sendhas a message for the original process and places that process on the run-queue- we resume in
yieldand, depending on the specified destination queue, either dequeue the process or put it on the sleep queue
Release numbering skipped 1.x to avoid confusion with internal project.