Releases: ohkami-rs/ohkami
Releases · ohkami-rs/ohkami
v0.20
What's Changed
- Performance tuning by @kana-rus in #186
- Performance tuning by @kana-rus in #187
- Dispatch routers by method by @kana-rus in #188
- handle HEAD request by GET tree and respond without content, Content-Length by @kana-rus in #189
- Correctly handle OPTIONS, Access-Control-Request-Method by @kana-rus in #190
- Builtin basic auth fang by @kana-rus in #191
- update docs by @kana-rus in #192
- update docs by @kana-rus in #193
#[bindings]
: variable bindings as associated consts by @kana-rus in #194- update docs by @kana-rus in #195
- Fix bug on
response::Headers
's append & add test by @kana-rus in #196 - Performance tuning by @kana-rus in #197
- revise repo URLs to org's one by @kana-rus in #198
- use
TcpStream::split
inSession::manage
onrt_tokio
& omitVec
fromPath.params
by @kana-rus in #199 - feat: set keep-alive timeout by environment variable by @kana-rus in #200
- perf: lightweight headers map by @kana-rus in #201
- Refactor: headers by @kana-rus in #202
- perf: more optimized
itoa
by @kana-rus in #203 - add
File upload
sample to README by @kana-rus in #204 - Unroll
itoa
with a macro by @mcpower in #205 - Using random values in the
itoa
benchmark by @mizar in #206 - Wrong output
itoa_03
anditoa_04
by @mizar in #207 - refactor: bench
itoa
with test cases of less than 10GB by @kana-rus in #208 itoa
: statically assert that the max ofMAX
is 19 by @kana-rus in #209- refactor: bench itoa in 3 levels by @kana-rus in #210
- refactor standard headers: iterate only by inserted values by @kana-rus in #211
- chore: update deps by @kana-rus in #212
- fix itoa bench: reuse the same buffer and avoid redundant allocation during each iter by @kana-rus in #213
itoa
: Can be about 10 times faster by @mizar in #214- fix headers bench: use
Vec::reserve
for reserve buf capacity by @kana-rus in #215 - Remove
frac
fromtime::Time
by @kana-rus in #216 - fix: leave Content-Length in HEAD response by @kana-rus in #218
- feat: add
utils::timeout_in
by @kana-rus in #219 - feat: WebSocket by @kana-rus in #220
- feat: OHKAMI_WEBSOCKET_TIMEOUT by @kana-rus in #221
- fix: always send close frame when closing websocket connection by @kana-rus in #222
- fix: automatically send pong for ping from client in
Message::read_from
by @kana-rus in #223 - chore: README by @kana-rus in #224
- chore: update README by @kana-rus in #225
- feat:
q.add
instream::queue
by @kana-rus in #226 - feat: always specialize
index.html
in.Dir
by @kana-rus in #227 - fix ws Handler:
Fn
->FnOnce
& routing bug by @kana-rus in #228 - feat: split websocket connection by @kana-rus in #229
- fix: Taskfile & wrong cfg by @kana-rus in #230
- chore: ensure
rt_worker
to be built onwasm32-unknown-unknown
target by @kana-rus in #231 - Explicitly not-support using
ws::Connection
in detouched tasks by @kana-rus in #232 - feat: Graceful Shutdown by @kana-rus in #233
- refactor: graceful shutdown impl by @kana-rus in #237
- chore: not combine
cfg
s between outer and inner an anon-const to avoid error message on editor by @kana-rus in #238 - chore: fix
html_root_url
& crate inner doc comment by @kana-rus in #239 - Separate schema from format by @kana-rus in #245
- chore: include
Serialize
,Deserialize
,JSON
inprelude
by @kana-rus in #247 - chore: CI: cache sccache dir by @kana-rus in #248
- perf: reuse
Request
in a session by @kana-rus in #249 - feat: Add
"ip"
feature by @kana-rus in #250 - fea: add
"rt_glommio"
by @kana-rus in #252 - feat: add
"rt_smol"
by @kana-rus in #253 - chore: add
benches_{tokio,vs_actix-web}
& add[profile.release]
config tobenches_*
by @kana-rus in #254 - chore: update CI for more concurrency by @kana-rus in #255
- chore: remove format::V by @kana-rus in #256
- chore: benches_rt/tokio: set
event_interval
to 1 by @kana-rus in #257 - chore: update README by @kana-rus in #258
- chore: update README by @kana-rus in #259
- chore: dependencies: remove tokio's "sync" feature ( unused ) by @kana-rus in #260
New Contributors
Full Changelog: v0.19...v0.20
v0.19
What's Changed
- optimized CORS & append header with
,
instead of,
by @kana-rus in #155 - Add to
categories
: "network-programming", "wasm" by @kana-rus in #156 - introduce
JWTToken
& export frombuiltin::item
together withFile
by @kana-rus in #157 - Support unit into response by @kana-rus in #158
- Partially support cargo workspace in
#[bindings]
by @kana-rus in #159 #[bindings]
: add static methods that return vars bindings as literals by @kana-rus in #160- Support
unix_timestamp
in worker by @kana-rus in #161 - Fix & Update
builtin::utils::JWT
by @kana-rus in #162 - Support
where /* validation fn */
in#[Payload]
by @kana-rus in #163 #[Payload]
: take validating expression(s) inwhere 〜
by @kana-rus in #164- Improve error reportings by @kana-rus in #165
- Remove
log_error!
in ahead of BadRequest response with the error text by @kana-rus in #166 log_error!
→warning!
by @kana-rus in #167- Fix CORS: preflight: return with 200 (not 204) & correctly handle 404 by @kana-rus in #168
- fix JWT: skip verifying for OPTIONS requests by @kana-rus in #169
- fix JWT: to not return error response for OPTIONS amd only put warning by @kana-rus in #170
- fix
warning!
: useconsole_info!
instead ofconsole_warn!
in rt_worker by @kana-rus in #171 - Remove log
ohkami::builtin::JWT doesn't perform verifying for OPTIONS requests
inJWT::verified
by @kana-rus in #172 - Call
crate::warning!
directly by @kana-rus in #173 - Add test for response headers: write after multiple insertion with same key by @kana-rus in #174
- Support sse by @kana-rus in #175
- Optimized size-hexizing in sending chunked encoding by @kana-rus in #176
- More optimized size-hexizing for chunked encoding by @kana-rus in #177
- update dependencies by @kana-rus in #178
- bump version & update docs by @kana-rus in #179
- Return concrete type within all methods of
utils::StreamExt
by @kana-rus in #180 - Omit
S: Send
bound ofDataStream::from_stream
cfgfeature="rt_worker"
by @kana-rus in #181 - move codes around stream into
ohkami_lib/
& addStreamExt::chain
,once
by @kana-rus in #182 - Support 4
FromRequet
items in handler by @kana-rus in #183 - Add
utils::stream::queue
& openai chat completions example by @kana-rus in #184 - update README & add doc of
stream::queue
by @kana-rus in #185
Full Changelog: v0.18...v0.19
v0.18
Auto Generated
What's Changed
- Improve lib slice by @kana-rus in #129
- Add tests for headers by @kana-rus in #130
- Improve request parsing by @kana-rus in #131
- sync lib.rs inner doc with README by @kana-rus in #132
- Fix benches: feature selection & avoid SIGKILL by
&*vector
->vector.as_slice()
by @kana-rus in #133 - Update
CowContent
to useCowSlice
by @kana-rus in #134 - Improve Request parsing by @kana-rus in #135
- Update benches by @kana-rus in #136
- Update headers & benchmark by @kana-rus in #137
- Update req res interface by @kana-rus in #138
- Fix
Request::read
: returnOk(None)
if error kind isConnectionReset
by @kana-rus in #139 - Add bindings attribute by @kana-rus in #140
- Update docs by @kana-rus in #141
- Fix Cookie handling by @kana-rus in #142
- Support
Connection: "Close"
not only: "close"
by @kana-rus in #143 - Add Keep-Alive timeout by @kana-rus in #144
- Support
Sec-Fetch-{Dest,Mode,Site,User}
as standard headers by @kana-rus in #145 - Ignore error of
ErrorKind::NotConnected
in shutdown by Keep-Alive timeout by @kana-rus in #146 - Update README by @kana-rus in #147
- Update:
builtin::fang::Timeout
: construct by::by〜()
by @kana-rus in #148 - Update
worker
crate to v0.2 by @kana-rus in #149 - Fix macros: comment out
default = ["DEBUG"]
by @kana-rus in #150 - Fix
worker
version in README sample -> 0.2.0 by @kana-rus in #151 - bump version -> 0.18.1 by @kana-rus in #152
- Fix CORS &
testing::TestResponse::header
by @kana-rus in #153 - 0.18.1 -> 0.18.2 & Update README by @kana-rus in #154
Full Changelog: v0.17...v0.18
v0.17
Fundamental Changes
- Support Cloudflare Workers by
rt_worker
feature ( #117, #118, #121, #122, #127 ) - Support struct-level
#[query]
attribute in#[Query]
( #116 ) - Support optional
FromRequest
items ( #123 ) - Rebuild
Response
's public methods ( #126 )
Others
and docs update
Auto Generated
- Remove
[package.metadata.crates.io]
& Add docs forJWT
by @kana-rus in #114 - Add:
[package.metatata.docs.rs] features = ["rt_tokio"]
in ohkami/Cargo.toml by @kana-rus in #115 - Support struct-level #[query] attributes by @kana-rus in #116
- Add rt worker by @kana-rus in #117
- Fix: put target fn in
#[worker]
's expanded by @kana-rus in #118 - Fix:
Clone
,from_iter
by @kana-rus in #119 - insert
#[cfg(feature="DEBUG")] println!
s by @kana-rus in #120 - Fix:
QueryParams::iter
,Response::complete
(don't use setDate
… by @kana-rus in #121 - ohkami_lib: v0.2.0 -> v0.2.1 for marking
#[cfg(〜)]
an 64bit-speciffic code path to clear warning in wasm32 by @kana-rus in #122 - Support optional query payload by @kana-rus in #123
- Fix request::{Headers, QueryParams} : impl Debug by
debug_map
by @kana-rus in #124 - Updated Taskfile & Fix newly found errors by @kana-rus in #125
- Rebuild
Response
's public methods by @kana-rus in #126 - impl
FromRequest
forworker::{Env, Context}
inrt_worker
by @kana-rus in #127 - Add tests for URLEncoded by @kana-rus in #128
Full Changelog: v0.16.0...v0.17
v0.16
Fundamental Changes
Drastically update the fang system
- Introduce
Fang
andFangProc
, like tower'sLayer
andService
. - Omit doubly-boxed
Future
s inFangs
or something as possible I can. - Remove
Ohkami::howl_with
and make every fangs to be called for any requests, includingNot Found
one, that are eaten by aOhkami
they are registered. - Provide
FangAction
for easy impl ofFang
Drastically update the payload system
- Introduce
Payload
andPayloadType
trait based onserde
framework. - Remove
#[ResponseBody]
- Update
#[Payload]
to take an existing type that implsPayloadType
. - Provide 5 builtin
PayloadType
:JSON
,Text
,HTML
,Multipart
,URLEncoded
Add static dir serving
"/route".Dir("./path/to/dir")
creates Dir
, that serves all files in ./path/to/dir
.
Buildable without rt_*
For ease with developing third-party Fang
s, now ohkami
can be build without rt_*
feature.
More intuitive route matching
In request handling, make route matching independent of registering order in Ohkami
.
Internal Changes
More efficient resource handling in request / response
Put large arrays in Box<_>
, this doesn't make bench scores worse.
v0.15
Fundamental Updates
- Add
type Type: BodyType
inResponseBody
and, whenType
isJSON
, automatically implResponseBody<Type = JSON>
forVec<_>
,[_; _]
,&[_]
,Option<_>
- Add
type Error: IntoResponse
in{Front, Back}Fang
and updates their return type toOutput = Result<(), Self::Error>
Other Changes
Response::{json_str, set_json_str}
: mark as unsafe- Document updates
v0.14
v0.13.0
Fundamental Fix
- Activate
derive
feature of serde that ohkami directly depends on, then finally#[PayloadJSOND]
and#[ResponseBody(JSONS)]
get be able to work! - Implement a decent connection handling for HTTP/1.1, then finally got able to handle pipelined requests properly!
Breaking Changes
- The argument of
Ohkami::howl
:impl {runtime}::net::ToSocketAddr
instead ofimpl ohkami::TCPAddress
. - Automatically set
Content-Length: 0
for response if it does't have content and its status isn't204 No Content
.
Bug Fix
- Merge two or more duplicated fangs into one before applying them to router.
Others
- Improved error messages and error responses.
v0.12.0
Breaking Changes
- #75:Remove
Fang(〜)
and addFang::front
,Fang::back
- #73:Support all (non-deprecated) HTTP statuses in
Status
enum andtyped
module
Bug Fix
- #74:Fix a bug that
Request::path
returns an empty bytes when the raw request path is/
Other Changes
- Support any requests having path with trailing
/
- Update doc comments, README, LICENSE year