diff --git a/docs/developers/meta/rust-nightly.md b/docs/developers/meta/rust-nightly.md
new file mode 100644
index 000000000..b07e718a8
--- /dev/null
+++ b/docs/developers/meta/rust-nightly.md
@@ -0,0 +1,190 @@
+---
+id: rust-nightly
+title: Nightly Rust
+---
+
+[comment]: # (mx-abstract)
+
+## Why Nighly?
+
+The Rust framework currently requires nightly Rust to run. This often causes issues with the inherent instability and frequent changes in the Rust compiler.
+
+While it would be ideal to have our infrastructure running on stable Rust, there are a number of features that we currently require.
+
+This page is intended to provide a list of all these features that we use, and explain what it would take to renounce them and move to stable.
+
+
+[comment]: # (mx-context-auto)
+
+## Nightly features
+
+
Feature | +Why we need it | +What it would take to discard | +
---|---|---|
+ never_type and exhaustive_patterns
+ |
+
+
+ The codec is optimized to work within smart contracts, but also to be used outside them, in a standard environment. Encoding and decoding functions return
+ Our solution relies heavily on the never type ( + Exhaustive patterns are a nice way to engage with code that is guaranteed at compile time to never return an error. + + |
+
+
+ The + Exhaustive patterns, if not stabilized soon, could be replaced with regular patterns with an unreacheable clause on the else. + + |
+
+ auto_traits and negative_impls
+ |
+
+ + We have a feature that allows safe conversions from one type to another via the codec. For instance, a smaller integer can be safely cast to a larger one. This feature is central to proxies and transaction syntax. + +
+ We are using auto-traits and negative implementations to overcome overlaps in the implementations of the |
+
+
+ Could be replaced by relying more heavily on proc-macros. We would need a way to generate the + Alternately, we could wait for an overlapping marker trait impls. + + |
+
+ try_trait_v2
+ |
+
+
+ Used in the deprecated |
+
+
+ Remove |
+
+ maybe_uninit_uninit_array and maybe_uninit_array_assume_init
+ |
+
+
+ Used in |
+
+ + There are less elegant ways to write that method, without using these features. + + |
+
+ generic_const_exprs
+ |
+
+
+ Used everywhere in working with the |
+
+ + Using universal fixed-sized arrays on heap for handling payloads. Might hurt performance, and might also occasionally run into overflows. + + |
+
+ slice_partition_dedup
+ |
+
+
+ Used in |
+
+ + We could probably replace that one with an in-house de-duplication function. + + |
+
+ is_sorted
+ |
+
+
+ Used in |
+
+ + We could probably replace them with in-house equivalent functions. + + |
+
+ panic_info_message
+ |
+
+ + Used in the wasm adapter to retrieve panic messages, for debugging purposes. + + |
+
+ + Figuring out a way to use the format function provided by the stable version of the library, without performing memory allocation. + + |
+