diff --git a/substrate/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm b/substrate/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm
index ef38f451ca9122cd095ad0b37991dedf3b32058d..0ab058e8ed7328f8a792920912ee0a3b10ce9091 100644
Binary files a/substrate/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm and b/substrate/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.compact.wasm differ
diff --git a/substrate/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm b/substrate/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm
index 06bc618acd1da88a7e53f549278302a816c49f3f..8887b0a3ab25d7ddd57c78886df6eae9433526b9 100755
Binary files a/substrate/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm and b/substrate/demo/runtime/wasm/target/wasm32-unknown-unknown/release/demo_runtime.wasm differ
diff --git a/substrate/polkadot/parachain/test-chains/basic_add/src/lib.rs b/substrate/polkadot/parachain/test-chains/basic_add/src/lib.rs
index 723efb307f330281d562d991ef80f9ca3cf6cc38..7518072a1dda6017a964495c9e34b87bed065c82 100644
--- a/substrate/polkadot/parachain/test-chains/basic_add/src/lib.rs
+++ b/substrate/polkadot/parachain/test-chains/basic_add/src/lib.rs
@@ -17,7 +17,13 @@
 //! Basic parachain that adds a number as part of its state.
 
 #![cfg_attr(not(feature = "std"), no_std)]
-#![cfg_attr(not(feature = "std"), feature(alloc, core_intrinsics, lang_items, panic_implementation, core_panic_info))]
+#![cfg_attr(
+	not(feature = "std"),
+	feature(
+		alloc, core_intrinsics, lang_items, panic_implementation, core_panic_info,
+		alloc_error_handler
+	)
+)]
 
 #[cfg(not(feature = "std"))]
 extern crate alloc;
diff --git a/substrate/polkadot/parachain/test-chains/basic_add/src/wasm.rs b/substrate/polkadot/parachain/test-chains/basic_add/src/wasm.rs
index edf53dc46f68adb17a0a7af94e286873c8ad5222..38a8aa81b5cb2792ec8740e4f44045b0da9d2cb8 100644
--- a/substrate/polkadot/parachain/test-chains/basic_add/src/wasm.rs
+++ b/substrate/polkadot/parachain/test-chains/basic_add/src/wasm.rs
@@ -16,7 +16,7 @@
 
 //! Defines WASM module logic.
 
-use core::{intrinsics, panic};
+use core::{intrinsics, panic, alloc};
 use parachain::{self, ValidationResult};
 use parachain::codec::Slicable;
 use super::{HeadData, BlockData};
@@ -29,9 +29,9 @@ pub fn panic(_info: &panic::PanicInfo) -> ! {
 	}
 }
 
-#[lang = "oom"]
+#[alloc_error_handler]
 #[no_mangle]
-pub fn oom() -> ! {
+pub fn oom(_: alloc::Layout) -> ! {
 	unsafe {
 		intrinsics::abort();
 	}
diff --git a/substrate/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm b/substrate/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm
index 31556cad323392d585bb7fba29743f41cf6d91b2..b81c6f912785f20f22b001556592c5c9a3fa65ec 100644
Binary files a/substrate/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm and b/substrate/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.compact.wasm differ
diff --git a/substrate/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm b/substrate/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm
index 7d10ac489dfb48c17fca9c32c204b202def58d3c..4430bf8545f650ea9ea4f02c94f95e6814af6054 100755
Binary files a/substrate/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm and b/substrate/polkadot/runtime/wasm/target/wasm32-unknown-unknown/release/polkadot_runtime.wasm differ
diff --git a/substrate/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.compact.wasm b/substrate/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.compact.wasm
index 8caad8964a3bbf27a1655cf19314bd7ec428ee35..c098995d4274051069fb9fbd616145487726a897 100644
Binary files a/substrate/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.compact.wasm and b/substrate/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.compact.wasm differ
diff --git a/substrate/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.wasm b/substrate/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.wasm
index 23480a619993d6181e0e2de4c027d61b0f90f741..11fb0a7073966435624510e56bd740552c5393f9 100755
Binary files a/substrate/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.wasm and b/substrate/substrate/executor/wasm/target/wasm32-unknown-unknown/release/runtime_test.wasm differ
diff --git a/substrate/substrate/runtime-io/src/lib.rs b/substrate/substrate/runtime-io/src/lib.rs
index b3373fb46dc09148972ef064890cb2c3fd65c159..9d57f537f73d888b8646a0d94fb9cd715b7082ec 100644
--- a/substrate/substrate/runtime-io/src/lib.rs
+++ b/substrate/substrate/runtime-io/src/lib.rs
@@ -19,6 +19,7 @@
 #![cfg_attr(not(feature = "std"), no_std)]
 #![cfg_attr(not(feature = "std"), feature(lang_items))]
 #![cfg_attr(not(feature = "std"), feature(panic_implementation))]
+#![cfg_attr(not(feature = "std"), feature(alloc_error_handler))]
 #![cfg_attr(not(feature = "std"), feature(core_intrinsics))]
 #![cfg_attr(not(feature = "std"), feature(alloc))]
 
diff --git a/substrate/substrate/runtime-io/without_std.rs b/substrate/substrate/runtime-io/without_std.rs
index 272f2fc04f5e11cd69304ee5edd5cca8b164c149..e1dd22c577f25dcd08362ff0bccc524dbea949e9 100644
--- a/substrate/substrate/runtime-io/without_std.rs
+++ b/substrate/substrate/runtime-io/without_std.rs
@@ -40,8 +40,8 @@ pub fn panic(info: &::core::panic::PanicInfo) -> ! {
 	}
 }
 
-#[lang = "oom"]
-pub extern fn oom() -> ! {
+#[alloc_error_handler]
+pub extern fn oom(_: ::core::alloc::Layout) -> ! {
     static OOM_MSG: &str = "Runtime memory exhausted. Aborting";
 
 	unsafe {
diff --git a/substrate/substrate/runtime/system/src/lib.rs b/substrate/substrate/runtime/system/src/lib.rs
index 182a1a0aa5f6eb53473bbaab47dfda751cf8055a..e0c0f94a654d967abdd567a98a4de7eddd93e753 100644
--- a/substrate/substrate/runtime/system/src/lib.rs
+++ b/substrate/substrate/runtime/system/src/lib.rs
@@ -72,7 +72,6 @@ pub trait Trait: Eq + Clone {
 	type Header: Parameter + traits::Header<
 		Number = Self::BlockNumber,
 		Hash = Self::Hash,
-		Hash = Self::Hash,
 		Digest = Self::Digest
 	>;
 }
diff --git a/substrate/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm b/substrate/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm
index 17284d56cd7e80d43c9bc1fb611be277d8cf4371..cc2e8a03c3265cdf173f1a756fea9030e6032ea3 100644
Binary files a/substrate/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm and b/substrate/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.compact.wasm differ
diff --git a/substrate/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm b/substrate/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm
index 4c6330bb97700a54ce83806d2b66f084a1e453ee..dc9dffdade8135ede20c1573be02836e60b564e5 100755
Binary files a/substrate/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm and b/substrate/substrate/test-runtime/wasm/target/wasm32-unknown-unknown/release/substrate_test_runtime.wasm differ