-
Notifications
You must be signed in to change notification settings - Fork 14
feat: introduce Path<T> and obsolete current implicit path params
#493
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
|
waiting for nurmohammed840/nio#3 for buildability with |
|
I'll force merge this to |
kanarus
added a commit
that referenced
this pull request
Aug 27, 2025
* v0.24, edition 2024 * docs(README): mention local fangs more clearly (#403) * docs(README): add `Typed error` section in `Snippets` (#404) * docs(README): add `Typed error` section in `Snippets` * fix sample code * docs: add `DI by generics` section to README `Snippets` and similar one to `Ohkami` struct doc (#405) * docs: add `DI by generics` section to README `Snippets` and similar one to `Ohkami` struct doc * fix sample code * rename(openapi): `Parameter::maybe_in_*` -> `Parameter::in_*_optional` (#413) * fix(openapi): correct `APIKey::{query, cookie}`'s `apikey_in:"header"` (#414) * enhance(worker): Support global bindings arg of `#[worker]` (#416) * introduce `x_worker::FromEnv` * add `samples/worker-with-global-bindings` for test * sucessfully generate `openapi.json` && add test for `samples/worker-with-global-bindings` * chore: fix account name in CODEOWNERS (#418) * enhance(openapi): provide default implementation of `openapi_responses` returning empty `Responses` (#419) * enhance(openapi): allow `#[operation]` to newly set status description (#420) * enhance(typed): success status with headers (#422) * enhance(typed): add `with_headers` to success status types * update doc * improve doc * add tests * fix to avoid empty `CONTENT_TYPE` * fix to check `B::CONTENT_TYPE.is_empty()` before evaluating `into_body()` * not run this tests on rt_worker * enhance(util): improve internal log macros (#424) * enhance(util): improve internal log macros * print file, line, column in `DEBUG!` * enhance(worker): Support wrangler.jsonc (#425) * enhance(worker): Support wrangler.jsonc * pass regression tests (toml / by samples/test.sh) * add `samples/worker-bindings-jsonc` & pass test ( compiles / by samples/test.sh ) * fix test * refactor(worker): use `Option<&'static str>` instead of unclear string convention (#426) * docs(worker): mention about first-class support for rt_worker (#427) * docs(worker): say `wrangler.jsonc` instead of `wrangler.toml` in template description (#428) * enhance(fangs): set `SendSyncOnNative + 'static` as super trait of `Fang` `Fangs` (#429) * enhance(ohkami): Support howl with an existing `TcpListener` (#430) * enhance(ohkami): Support howl with an existing `TcpListener` * fix sample code in doc comment * fix typo * enhance(ohkami): Support single-thread async runtime on multiple threads (#432) * add regression baseline `examples/multiple=single-threads` (currently only main thread) * update regression baseline with socket.resueaddr and thread::spawn by num_cpus - 1 (currently panics by multiple CtrlC handlers) * refactor and extend `sync::CtrlC` impl * perf: use `RwLock<Vec<AtomicPtr<_` instead of `Mutex<Vec<_` * fix(request): hardcoded buffer size (#434) * fix `__rt__::testing::block_on` and related & add `request/_test_parse/test_parse_request_large` (currently fails with `BadRequest` as expected) * introduce `OHKAMI_REQUEST_BUFSIZE` environment variable instead of hardcoded `const BUFSIZE` * add warning when failed to parse request headers * increase default request_bufsize to 1 << 11 * comment out DEBUG * fix test * update WARNING message * create `examples/jwt` and move large-buf test into it * fix test * fix test * refactor(routing): `.Dir()` (#436) * refactor(routing): `.Dir()` * comment out DEBUG * fix cfg * chore: test `.Dir()` (#437) * add `TestResponse::content()` & update `examples/static_files` test * fix `RouteSegment::new`'s validation & add `test_omit_html` `test_serve_dotfiles` * comment out DEBUG * fix: check `Content-Length` in `testing` and correctly set `Content-Length` in `StaticFileHandler` of `Dir` (#438) * enhance(testing): expect `TestResponse::json`'s `serde_json::Result` to be `Ok` (#439) * enhance(Dir): support conditional fetch (#442) * enhance(Dir): support conditional fetch with `If-None-Match` `If-Modified-Since` * next: test conditional fetch impl * add `Debug` `PartialEq` for `ETag` * tls: basic tls implementation with tokio-rustls (tokio-only!) (#441) * enhance(Dir): support conditional fetch with `If-None-Match` `If-Modified-Since` * next: test conditional fetch impl * tls: implement basic tls implementation with tokio-rustls (tokio-only!) * fix(session): fix AsyncRead & AsyncWrite imports for session * fix(session): fix unsupported WS over TLS & cfg handling * fix(session): fix trait bounds when ws feature is disabled * fix(session): omit Send trait to unbreak builds on other runtimes (hopefully) * fix(etag): merge issues fix --------- Co-authored-by: kanarus <[email protected]> * [refactor, chore](tls): tidy cfg, fix doc, test tls feature (#443) * refactor(tls): tidy cfg, fix doc, test tls feature * fix test * docs(tls): update README (#444) * refactor(session): use per-read timeouts for improved keepalive handling (#445) * enhance(Dir): Support precompressed files (#447) * introduce `header::{qvalue, encoding}` * 2025-04-01 20:21+9:00 * 2025-04-04 01:59+9:00 * skelton * remove DEBUG * first, pass existing tests * todo: test compression handling * sort `compressed` by file size * next: test compression handling * fix AcceptEncoding * fix Debug and typo * pass basic tests * introduce brotli in addition to gzip, and pass tests * add test cases for 406 Not Acceptable, and pass * modify comment * modify test name * update doc * skip empty path in `Dir::new` * fix handling of file extension and canonicalization * add test cases for precompressed files in subdirectory, and pass * modify DEBUG print * remove `async-std` support (#448) * rename(Ohkami): `howl_tls` to `howls` (#449) * rename(Ohkami): `howl_tls` to `howls` * fix doc sample code * chore: remove `async-std`-related docs and cfgs (#450) * fix(headers): Corretly handle *overset after deletion* (#455) * fix(headers): correctly handle overset after deletion * rm rustc-ice* * update ./examples/test.sh * cherry-pick #460 into v0.24 (#461) * cherry-pick #460 * resolve errors * handle Keep-Alive timeout log as `DEBUG`, not `WARNING` (#463) * handle session timeout log as `DEBUG`, not `WARNING` * WebSocket timeout as WARNING, Keep-Alive timeout as DEBUG * dx: introduce `INFO!` macro and log around CtrlC as INFO (#464) * dx: introduce `INFO!` macro and log around CtrlC as INFO * fix howl_tls and cfg * dx: make `WARNING!` print `[ohkami:WARNING]`, not `[ohkami:WARNS]` (#465) * fix(session): revise default timeout config (#466) * chore(worker): bump `worker` dependency to v0.6 (#475) * chore(CI): cache sccache directory after the most large task in order to maximize cache hit (#476) * chore: resolve warnings (#477) * chore: resolve warnings * remove unused mut * enhance(request): return `Response::RequestHeaderFieldsTooLarge` when met unexpected situation in request header parsing (#478) * docs: specify runtime versions (#484) * rename(fang, format): follow Rust's naming convention (#485) * rename(fang, format): follow Rust's naming convention * rename `EnamelFields`'s fields * fix code format * fix very critial typo, thanks to good tests! * chore(examples): run `cargo check` for all examples before tests for some examples (#486) * rename(headers): follow Rust's naming convention (#487) * rename(openapi): follow Rust's naming convention (#488) * rename(openapi): follow Rust's naming convention * fix `requestBody` -> `requestbody` * fix serde rename * fix typo: external_cocs -> external_docs * fix `openapi::secirity` method names * fix oauth flow namings & fangs' security uses * chore: bump `lambda_runtime` dependency to v0.14 (#489) * chore: bump `num_cpus` dependency to v1.17 (#490) * feat: introduce `Path<T>` and obsolete current implicit path params (#493) * impled skelton; TODO: update all tests, examples, samples and docs * update docs * update examples * fix openapi::Schema generic impls * update samples * update tests * chore(CI): temporarily omit `nio` (#495) * chore(CI): temporarily omit `nio` * fix around `benches_rt` * fix Taskfile's `status` for benches (skip control) * rename: unify `typed` and `format` modules into `handle` API (#496) * rename: unify `typed` and `format` module * update `Query` doc; TODO: update examples, samples, doc sample codes * rename the unified module to `component` * 2025-08-07 09:16+9:00 * update doc * update examples, samples, benches_rt * update tests * enhance(handle): impl `FromParam` for `Uuid` by default (#497) * enhance(handle): impl `FromParam` for `Uuid` by default * add `impl ohkami_openapi::Schema for uuid::Uuid` * docs: be sure to setup `Context` in DI sample's entry point (#498) * docs: be sure to setup `Context` in DI sample's entry point * fix to pass test * chore: resolve warnings (#499) * docs: mention `openapi::Tag` in README (#500) * enhance(worker): remove `wrangler whoami` call from `worker_openapi.js` (#501) * enhance(worker): remove `wrangler whoami` call from `worker_openapi.js` and add doc & test of `#[worker]` attribute's documentation args * improve `#[worker]` doc & add test for only-`servers` arg * docs: improve `#[worker]` docs and README's `rt_worker` description (#502) * docs: improve README's `rt_worker` description * improve README * mention global bindings pattern in `#[worker]` doc * docs: improve docs around `FromRequest` (#503) * rename: `handle` to `claw` (#505) * rename: `handle` to `claw` * fix wrong rename * fix examples * fix README * refactor around the `n_params` assertion system (#506) * refactor around the `n_params` assertion system * fix test * dx: put `#[diagnostic::do_not_recommend]` for local fangs' `IntoHandler` impls (#507) * dx: put `#[diagnostic::do_not_recommend]` for local fangs' `IntoHandler` impls * restore debug * docs: improve README (#508) * docs: improve README (#509) * refactor: unify where to impl `IntoHandler` (#510) * dx: `INFO!` log `howl(s)`ed address (#511) * dx: `INFO!` log `holwl(s)`ed local address * update examples * enhance(Route): deprecate `.Dir()` and introduce `.Mount()` (#512) * enhance(Route): deprecate `.Dir()` and introduce `.Mount()` * add `: Sized` constraint to `Route` * complete cfg * feat(worker): Support Hyperdrive in `#[bindings]` (#513) * feat(worker): Support Hyperdrive in `#[bindings]` * remove debug * docs(openapi): documentation for `Schema` trait (#514) * docs: follow templates repo's rename (#515) * docs: improve README (#516) * docs: improve README * fix a phrase * enhance(ws): Support `wss://` (#519) * enhance(ws): Support `wss://` * improve TLS accept handling and update examples/websocket * fix AsyncRead impl * update `mews` to v0.4.0 and tidy `session::connection` * chore(CI): add temporal workaround for bug of nightly-2025-08-12 (#522) * chore(CI): add temporal workaround for bug of nightly-2025-08-12 * do `rustup target add wasm32-unknown-unknown` also for workaround-one * feat(tls): Support `tls` feature on all native runtimes (#523) * impl skelton * update tests * how to setup test-*.pem for test * update test * pass tests & update docs * chore * fix typo * refactor around rt, io, format, logging (#525) * docs: `#[cfg_attr(docsrs, doc(cfg(feature = "...")))]` (#527) * rename(util): `timeout_in` into `with_timeout` (#528) * refactor(request): rename `Request::{init => uninit}` & fix `Pin::{new_unchecked => new}` (#529) * chore(CI): restore `rt_nio` checks/tests (#530) * chore(dep): bump `toml` from 0.8 to 0.9 (#531) * chore(dep): bump `toml` from 0.8 to 0.9 * fix `toml` features * fix(Mount): `omit_extension`'s doc and behavior to accept both `\.?ext` (#532) * fix(Mount): `omit_extension`'s doc and behavior to accept both `\.?ext` * fix deref * fix slice * refactor(Ohkami): reorganize `howl` and `howls` (#534) * tls: unify `howls` to `howl` * fix inline and doc * refactor around `howl` and `howls` * fix doc * remove unnecessary `impl Into` & improve doc * feat(fang): Add builtin CSRF protaction fang (#535) * impl skelton * add doc and init-validation * add first test * complete tests & pass * fix doc sample code * dx: add `#[derive]`s for some types (#536) * docs: A performant, declarative, and runtime-flexible web framework for Rust (#537) * remove zombie example * chore: resolve warnings * chore: fix typo * pref: `Connection` inlining * perf: add some #[inline]s * fix(request): avoid panic in str conversion (#543) * fix(request): avoid panic in str conversion * fix `Path`'s `Deref` users * refactor(header): improve `IndexMap` implementation (into `ByteArrayMap`) and fix benches (#544) * refactor `header::{IndexMap => ByteArrayMap}` * introduce `ByteArrayMap::insert_new` and use it in `ResponseHeaders::insert` * update bench * update bench * update response_headers bench * fix phrases and update some * refactor(fangs): update `Csrf` doc and `with_trusted_origins` validation (#545) * refactor(fangs): update `Csrf` docs and registration-validation * refactor more * improve panic messages * refactor(fangs): improve `FangAction` doc and tidy code format (#546) * update(testing): automatically set `Host` and `Date` header if not set (#547) * update(testing): automatically set `Host` and `Date` header if not set * avoid unnecessary unsafe * rename(testing): `Testing` to `Tester`, `TestingOhkami` to `TestOhkami` (#548) --------- Co-authored-by: agam <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Path<P>and remove restriction of path params #458Current
style depends on the implicit rule that the first argument of a handler represents path parameters if its type doesn't implement
FromRequesttrait.This will be not intuitive for most people, at least than explicit
Path(param): Path<T>style:This PR breakingly introduces the
Path<T>replacing with current implicit path params system.