You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
rocket_codegen currently uses Rust's plugin system, which is slated for future removal and is a leading cause of breakage on nightly Rust. Rocket should move to implementing its code generation through proc_macro and related features for better stability guarantees.
These unstable features will need to be used by Rocket's proc_macro crate.
proc_macro_diagnostic, proc_macro_span. Allows Rocket to provide useful error messages from macros.
These unstable features will need to be used by application crates that use Rocket's macros.
proc_macro_hygiene. For macros that expand to non-items or macro definitions, including routes!, catchers!, and uri!, and #[route].
decl_macro, for #[route].
Testing
All existing tests for attribute syntax, etc.
Verify that macros work via all applicable import mechanisms: macro_use (#[macro_use] extern crate rocket;), use_extern_macros (use rocket::macro), and proc_macro_path_invoc (#[derive(rocket::macro)],#[rocket::macro], or rocket::macro!()), and any others missing from this list. Ensure these cases are enough to cover compatibility with consumer crates that target the 2018 edition as well.
The text was updated successfully, but these errors were encountered:
Motivation
rocket_codegen
currently uses Rust'splugin
system, which is slated for future removal and is a leading cause of breakage on nightly Rust. Rocket should move to implementing its code generation throughproc_macro
and related features for better stability guarantees.Related issues
quote_
macros #678: Stop using the quote_ macros. This conversion process supersedes that issue.proc_macro
tracking issueproc_macro_
expansion feature gates asproc_macro_hygiene
rust-lang/rust#52121: merge severalproc_macro
features asproc_macro_hygiene
Questions/Concerns
Progress
Attribute macros:
route
and its variants (get
,put
,post
,delete
,head
,patch
,options
)catch
Custom derives:
derive(FromForm)
derive(FromFormValue)
derive(Responder)
derive(UriDisplay)
Bang macros:
routes!
: Reimplement routes! and catchers! as proc_macros #680catchers!
: PR: Reimplement routes! and catchers! as proc_macros #680uri!
rocket_internal_uri!
(some remaining work on the diagnostics)Upstream:
Required rustc Features
These unstable features will need to be used by Rocket's proc_macro crate.
proc_macro_diagnostic
,proc_macro_span
. Allows Rocket to provide useful error messages from macros.These unstable features will need to be used by application crates that use Rocket's macros.
proc_macro_hygiene
. For macros that expand to non-items or macro definitions, includingroutes!
,catchers!
, anduri!
, and#[route]
.decl_macro
, for#[route]
.Testing
#[macro_use] extern crate rocket;
), use_extern_macros (use rocket::macro
), and proc_macro_path_invoc (#[derive(rocket::macro)],
#[rocket::macro]
, orrocket::macro!()
), and any others missing from this list. Ensure these cases are enough to cover compatibility with consumer crates that target the 2018 edition as well.The text was updated successfully, but these errors were encountered: