Skip to content

Releases: ohkami-rs/ohkami

v0.22

08 Feb 05:12
6e243ac
Compare
Choose a tag to compare

What's Changed

Full Changelog: v0.21...v0.22

v0.21

25 Jan 22:07
67554a3
Compare
Choose a tag to compare

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 on rt_worker by @kanarus in #263
  • refactor: Memory: make .0 public / place in fang & also export from prelude by @kanarus in #265
  • chore: update README by @kanarus in #266
  • rename utils to util 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 of actions-rs by @kanarus in #273
  • refactor(ws): extract WebSocket implementation to a crate by @kanarus in #274
  • feat: ws on rt_worker by @kanarus in #275
  • fix: ws on rt_worker: wrap ws in Rc instead of clone ws itself by @kanarus in #276
  • perf(ws on rt_worker): SessionMap: use swap_remove & omit redundant None check by @kanarus in #278
  • enhance: headers set optional value by @kanarus in #279
  • perf: custom headers: use Vec<(K, V)> instead of FxHashMap<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* to on.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 && export testing 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 in Drop 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 on rt_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 to Context 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 to additionalOptions by @kanarus in #314
  • openapi: workers_openapi.js: use npx wrangler instead of wrangler by @kanarus in #315
  • fix(openapi): consider that process.argv doesn't have script path in node -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 in Ohkami::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

Full Changelog: v0.20...v0.21

v0.20

28 Aug 23:18
950097a
Compare
Choose a tag to compare

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 in Session::manage on rt_tokio & omit Vec from Path.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 and itoa_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 of MAX 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 from time::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 in stream::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 on wasm32-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 cfgs 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 in prelude 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 to benches_* 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

17 Jun 08:04
2d2a54d
Compare
Choose a tag to compare

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 from builtin::item together with File 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) in where 〜 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!: use console_info! instead of console_warn! in rt_worker by @kana-rus in #171
  • Remove log ohkami::builtin::JWT doesn't perform verifying for OPTIONS requests in JWT::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 of DataStream::from_stream cfg feature="rt_worker" by @kana-rus in #181
  • move codes around stream into ohkami_lib/ & add StreamExt::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

04 May 09:03
caa5f30
Compare
Choose a tag to compare

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 use CowSlice 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: return Ok(None) if error kind is ConnectionReset 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

23 Apr 10:04
Compare
Choose a tag to compare

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

  • Improve Debug output of Request ( #124 )
  • Add tests for URLEncoded ( #128 )
  • Update CI ( #125 )

and docs update


Auto Generated
  • Remove [package.metadata.crates.io] & Add docs for JWT 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 set Date … 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 for worker::{Env, Context} in rt_worker by @kana-rus in #127
  • Add tests for URLEncoded by @kana-rus in #128

Full Changelog: v0.16.0...v0.17

v0.16

14 Apr 08:37
1d19ece
Compare
Choose a tag to compare

Fundamental Changes

Drastically update the fang system

  • Introduce Fang and FangProc, like tower's Layer and Service.
  • Omit doubly-boxed Futures in Fangs or something as possible I can.
  • Remove Ohkami::howl_with and make every fangs to be called for any requests, including Not Found one, that are eaten by a Ohkami they are registered.
  • Provide FangAction for easy impl of Fang

Drastically update the payload system

  • Introduce Payload and PayloadType trait based on serde framework.
  • Remove #[ResponseBody]
  • Update #[Payload] to take an existing type that impls PayloadType.
  • 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 Fangs, 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

20 Feb 01:47
fe5ca95
Compare
Choose a tag to compare

Fundamental Updates

  • Add type Type: BodyType in ResponseBody and, when Type is JSON, automatically impl ResponseBody<Type = JSON> for Vec<_>, [_; _], &[_], Option<_>
  • Add type Error: IntoResponse in {Front, Back}Fang and updates their return type to Output = Result<(), Self::Error>

Other Changes

  • Response::{json_str, set_json_str}: mark as unsafe
  • Document updates

v0.14

16 Feb 00:35
609626e
Compare
Choose a tag to compare

Fundamental Changes

  • Update fangs system: asynchronous
  • Support global fangs: Ohkami::howl_with, Testing::oneshot_with

Others

  • Handler: Support any single FromParam value without tuple
  • Fix: Bug in JWT::issue
  • Upgraded documents

v0.13.0

09 Feb 00:34
ccda4cf
Compare
Choose a tag to compare

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::howlimpl {runtime}::net::ToSocketAddr instead of impl ohkami::TCPAddress.
  • Automatically set Content-Length: 0 for response if it does't have content and its status isn't 204 No Content.

Bug Fix

  • Merge two or more duplicated fangs into one before applying them to router.

Others

  • Improved error messages and error responses.