- Continue handling frames after receiving
Ping - Bump
stdlibto>=1.0.0 - Respond with HTTP 400 on missing
hostheader instead of abnormal exit
- Properly send close frame when user handler stops its loop
- Use correct content length header when sending a file with offset
- Revert
clocksupervisor change to allow multiple mist servers in the same VM
- Rename
get_client_infotoget_connection_info - Use factory supervisor pattern
- Rename
get_client_infoto better match record name - Update SSE and chunked encoding to use
actor-ish pattern - Remove some
string.inspecton errors for better logging and performance - Remove
application_start_modulein favor of static supervisor child for clock process
- Removed usage of deprecated
result.unwrap_both
- Replace custom
rescuewith theexceptionpackage - Bump
grampsversion for better WebSocket compression support
- Re-add
supervisedmethod
- Revert clock change from named process back to erlang application
- Running multiple mist supervisors would cause issues with starting the ETS table
- Refine API for starting and TLS
- Support
gleam_erlangandgleam_otpv1 - Add
supervisedandsupervised_sslmethods to help integrating with existing supervisors - Simply starting APIs
- Add
mist.Nexthelper functions for websockets to abstract overgleam_otp/actor.Nexttype
- Bump
stdlibversion requirement to >=0.50.0
- Tighten
gleam_httpconstraint for new function
- Relaxed
gleam_httpconstraint to permit v4.
- Migrate to
gleam/dynamic/decodeAPI
- Open files in
binarymode to fix SSL file send bug
- Properly handle
content-lengthand drop body on response when appropriate
- Replace
birlwith manual date methods (Thank you, @giacomocavalieri)
- Remove some code that produces a warning when compiling
- Bump
stdlibversion requirement to >=0.44.0
- Allow binding to an interface
- Disable IPv6 by default
- Pass
IpAddresstoafter_start
- Return
Servertype fromstart_*methods to get OS-assigned port. Will also eventually provide graceful shutdown options - Move client IP / port access from
Connectionto public function - Don't keep HTTP/1.0 connection open
- Fix bug reading large requests from socket
- Bump gleam version requirement
- Use
erlangapplication start module for clock
- Don't pull or
let assertfrom websocket when more data is needed - Don't use
uri.parsebecause it's a bit slow - Don't use the
request.set_<property>methods, because I'm already setting basically everything and they are kinda slow - Support
permessage-deflateWebSocket extension - Pull some stuff out of
mistintogrampsand use its updated API - Allow returning multiple headers with the same name
- Currently there are no checks on which headers you do this with
- Internal API refactor along with (absolutely not ready) initial HTTP/2 "support" included but disabled
- Bumped some dependency versions
- Fix performance regression with
Date:header
- Second pass at Server-Sent Events
- This API more closely follows the
gleam/otp/actorAPI
- This API more closely follows the
- Parse
Hostheader to sethostandportfields onRequest - Bump
glistenversion - Remove deprecated
function.composeusage - Support sending files over SSL
- This does not use
sendfileas that's not supported - Currently, it will naively read the whole file into memory
- This does not use
- Changed error type returned from
mist.start_https- This now checks for the presence of the key and certificate files
- Bump
glistenversion again! - First pass at support for Server-Sent Events
- Bump dep versions to get access to
Subjectfromglisten.serve(_ssl)
- Updated for Gleam v0.33.0.
- Log error from
rescuein WebSocket handlers - WebSocket
Textframe is now aString, since the spec notes that this type of message must be valid UTF-8
- Lots of WebSocket changes around spec correctness (still not 100% there)
- Fixed a few bugs around WebSocket handlers and user selectors
- Fix regression in WebSocket handler
- Pass scheme to
after_startto allow building valid URLs
- Pass WebSocket state to
on_closehandler - Fix socket active mode bug in WebSocket actor
- Update packages and change
bit_stringtobit_arrayandbit_buildertobytes_builder
- Remove WebSocket builder in favor of plain function
- Adds
on_initandon_closeto WebSocket upgrade function - Fix an issue where websocket crashes on internal control close frame
- Upgrade to
glistenv0.9
- Upgrade
glistenandgleam_otpversions
- Improve file sending ergonomics
- Big API refactor
- Add
client_iptoConnectionconstruct - Fix reading chunked encoding
- Add method for streaming request body
- Correctly handle query strings (@Johann150)
- Add constructor for opaque
Bodytype for testing handlers - Handle WebSocket
pingframes and reply correctly - Fix incorrect pattern match in
file_open(@avdgaag)
- Big public API refactoring and docs clean-up
- Fixed erroneous extra CRLF after response body
- Support chunked responses, via
Chunked(Iterator(BitBuilder)) - Convert syntax for gleam v0.27 support
- Utilize
request.schemeto determine which transport to use automatically - Support the
Expect: 100-continueheader functionality
- Remove duplicate imports that errored on newer gleam versions
- Support more HTTP status codes
- Allow
state.transportin handlers to abstract overTCP/SSL
- Add SSL support via the
run_service_sslandserve_sslmethods - Some refactorings in the internal libraries, if you were depending on them
- Update
glistenversion
- Fixed up broken README examples
- Removed a
mainmethod I accidentally left in :(
- BREAKING:
- refactor
http.handleandhttp.handle_funcinto separate module
- refactor
The handler_func implementation was about 250 lines. That seemed a little
excessive and unclear, so I just pulled that stuff out into separate functions.
I also thought it might be nice to have a separate handler module that housed
this code. The actual consumer changes are minimal.
- Revert
websocket.sendchange- It should be a similar order to
process.send
- It should be a similar order to
- Stop automatically reading body
run_servicenow accepts maximum body sizehttpmodule exportsread_bodyto manually parse body
- Support
Transfer-Encoding: chunkedrequests - Properly support query parameters
- Fix
websocket.sendargument order - Bump GitHub workflow versions
- Big WebSocket changes
- Handle larger text messages
- Support binary messages
- Properly reply to
pingmessages - Add helper function for
sending
- Properly support (most) HTTP methods
- Use
Senderin WS handler instead of raw socket
- Bump
glistenversion - Add support for
on_initandon_closeevents on WebSockets
- Make sure to include
"content-length"header
- Wrap user handler function in
rescuecall - Add
loggersupport for error handling
- Remove default
"content-type"header guessing - Add
run_servicemethod for simple servers
- Update some handler response type names
- Support for sending files with
file:sendfile
- Remove
routermodule and move tohttp
I started this list way later and don't really feel like going back further than this.