Skip to content

Releases: ohkami-rs/ohkami

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.

v0.12.0

06 Feb 18:27
91385f7
Compare
Choose a tag to compare

Breaking Changes

  • #75:Remove Fang(〜) and add Fang::front, Fang::back
  • #73:Support all (non-deprecated) HTTP statuses in Status enum and typed 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

v0.11.1

04 Feb 20:11
b6d0513
Compare
Choose a tag to compare

Changed

  • Add documents
  • Fix request handling bug #68