Releases: ohkami-rs/ohkami
Releases · ohkami-rs/ohkami
v0.22
What's Changed
- chore(macros): activate
worker
,openapi
inpackage.metadata.docs.rs
by @kanarus in #327 - chore: improve Cargo.tomls by @kanarus in #328
- openapi: repname
Responses::enumerated
intoResponses::new
by @kanarus in #332 - worker: support
ai
,r2_bucket
in#[bindings]
by @kanarus in #333 - worker: better Durable Object by @kanarus in #334
- openapi: tag by @kanarus in #335
- openapi:
Schema
: makeCow
,Arc
impl generic & impl for&Schema
by @kanarus in #336 - enhance: increase
Routing
impls tuples by @kanarus in #337 - chore(openapi): worker_openapi.js: add
--skip-login
option for diff test by @kanarus in #338 - fix(worker): improve
DurableObject
's default method impls by @kanarus in #339 - feat:
rt_lambda
by @kanarus in #340 - feat:
typed::header
by @kanarus in #341 - doc: README by @kanarus in #342
- worker: Support manual binding in
#[bindings]
by @kanarus in #343 - docs: update README and doc by @kanarus in #344
- chore(LICENSE): 2024 -> 2025 by @kanarus in #345
- update docs by @kanarus in #346
- rename:
Response::of
->Response::new
by @kanarus in #347 - openapi: make
{Response, Status}::openapi_responses
return emptyResponses
by @kanarus in #348 - docs: note
FIXME
this is flaky
for flaky tests by @kanarus in #349 - chore(lib): remove
signal
by @kanarus in #350 - fix: unify
x_lambda::ohkami_service_*
tests into single one by @kanarus in #351 - fix:
QueryParams::iter
: empty iterator when empty query by @kanarus in #352 - v0.22 by @kanarus in #353
- update docs by @kanarus in #354
- activate
Cow::Borrowed
viaIntoBody
by @kanarus in #355
Full Changelog: v0.21...v0.22
v0.21
What's Changed
- feat: graceful shutdown on all native runtime by @kanarus in #261
- feat: handle IP address by default on all native runtimes by @kanarus in #262
- refactor: remove
Send
Sync
bound of fang system onrt_worker
by @kanarus in #263 - refactor:
Memory
: make.0
public / place infang
& also export fromprelude
by @kanarus in #265 - chore: update README by @kanarus in #266
- rename
utils
toutil
by @kanarus in #269 - chore(deps): worker 0.3 → 0.4 by @kanarus in #270
- Fix version in README.md by @JustLinuxUser in #271
- chore CI: refactor Taskfile & use
dtolnay/rust-toolchain
instead ofactions-rs
by @kanarus in #273 - refactor(ws): extract WebSocket implementation to a crate by @kanarus in #274
- feat:
ws
onrt_worker
by @kanarus in #275 - fix: ws on rt_worker: wrap
ws
inRc
instead of clonews
itself by @kanarus in #276 - perf(ws on rt_worker):
SessionMap
: useswap_remove
& omit redundantNone
check by @kanarus in #278 - enhance: headers set optional value by @kanarus in #279
- perf: custom headers: use
Vec<(K, V)>
instead ofFxHashMap<K, V>
by @kanarus in #280 - rename: set
.custom()
->.__()
/ get.custom()
->.get()
by @kanarus in #281 - README: mention WebSocket on Durable Object on rt_worker by @kanarus in #282
- chore(CI): add
v*
toon.push.branches
by @kanarus in #283 - chore: fix warnings by @kanarus in #284
- refactor: router by @kanarus in #287
- refactor: runtime abstraction by @kanarus in #288
- feat: support
nio
async runtime by @kanarus in #289 - chore: remove feature flag
testing
&& exporttesting
module behind#[cfg(debug_assertions)]
by @kanarus in #290 - refactor: remove select macro of interruption handling by @kanarus in #291
- refactor ohkami_lib::time by @kanarus in #292
- chore: add README note what it is by @kanarus in #293
- rename:
SetHeaders
:.__()
->.x()
by @kanarus in #294 - docs: update doc comment for current
OHKAMI_*
environment variables by @kanarus in #296 - fix(native): perform
WaitGroup
's subtraction inDrop
impl for panic safety by @kanarus in #297 - refactor(sse):
DataStream
: more intuitive colocation and interface by @kanarus in #298 - chore(examples): refactor
examples/openai
->examples/chatgpt
by @kanarus in #299 - feat: openapi by @kanarus in #300
- chore(deps): worker 0.4 -> 0.5 by @kanarus in #301
- openapi: impl Schema for Cow by @kanarus in #302
- feat:
openapi
onrt_worker
by @kanarus in #303 - add wasm-pack installation by @kanarus in #304
- openapi: fix
sse::DataStream::openapi_responses
by @kanarus in #305 - fix(samples): make
worker-with-openapi
sample work & add test for builtin BasicAuth fang by @kanarus in #306 - feat: local fangs by @kanarus in #307
- feat: pass fangs via
Ohkami::new
by @kanarus in #308 Memory
toContext
by @kanarus in #309- chore(workspace) by @kanarus in #310
- feat:
Request.ip
on rt_worker by @kanarus in #311 - chore: fix JSDocs by @kanarus in #312
- fix(openapi): resolve compile error on
#[worker] async fn
by @kanarus in #313 - accept unknown flags without
--
and foward toadditionalOptions
by @kanarus in #314 - openapi: workers_openapi.js: use
npx wrangler
instead ofwrangler
by @kanarus in #315 - fix(openapi): consider that
process.argv
doesn't have script path innode -e
by @kanarus in #316 - chore: remove badgaes from lib.rs's inner doc by @kanarus in #317
- chore: update README, crate inner doc by @kanarus in #318
- docs: add doc comment for
Ohkami::{new, with}
by @kanarus in #319 - chore: add
Publish
workflow by @kanarus in #320 - chore: check if branch is main in
Publish
workflow by @kanarus in #321 - docs: add
handler
,path params
section inOhkami::new
doc by @kanarus in #322 - docs:
{Name}
->"{Name}"
literal-expected args by @kanarus in #323 - docs: add note about optional query params and
Option<Query<T>>
by @kanarus in #324
New Contributors
- @JustLinuxUser made their first contribution in #271
Full Changelog: v0.20...v0.21
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.