1cf592fa40
Refactor away RBML from rustc_metadata. RBML and `ty{en,de}code` have had their long-overdue purge. Summary of changes: * Metadata is now a tree encoded in post-order and with relative backward references pointing to children nodes. With auto-deriving and type safety, this makes maintenance and adding new information to metadata painless and bug-free by default. It's also more compact and cache-friendly (cache misses should be proportional to the depth of the node being accessed, not the number of siblings as in EBML/RBML). * Metadata sizes have been reduced, for `libcore` it went down 16% (`8.38MB` -> `7.05MB`) and for `libstd` 14% (`3.53MB` -> `3.03MB`), while encoding more or less the same information * Specialization is used in the bundled `libserialize` (crates.io `rustc_serialize` remains unaffected) to customize the encoding (and more importantly, decoding) of various types, most notably those interned in the `TyCtxt`. Some of this abuses a soundness hole pending a fix (cc @aturon), but when that fix arrives, we'll move to macros 1.1 `#[derive]` and custom `TyCtxt`-aware serialization traits. * Enumerating children of modules from other crates is now orthogonal to describing those items via `Def` - this is a step towards bridging crate-local HIR and cross-crate metadata * `CrateNum` has been moved to `rustc` and both it and `NodeId` are now newtypes instead of `u32` aliases, for specializing their decoding. This is `[syntax-breaking]` (cc @Manishearth ). cc @rust-lang/compiler |
||
---|---|---|
.. | ||
back | ||
debuginfo | ||
mir | ||
abi.rs | ||
adt.rs | ||
asm.rs | ||
assert_module_sources.rs | ||
attributes.rs | ||
base.rs | ||
basic_block.rs | ||
build.rs | ||
builder.rs | ||
cabi_aarch64.rs | ||
cabi_arm.rs | ||
cabi_asmjs.rs | ||
cabi_mips64.rs | ||
cabi_mips.rs | ||
cabi_powerpc64.rs | ||
cabi_powerpc.rs | ||
cabi_s390x.rs | ||
cabi_x86_64.rs | ||
cabi_x86_win64.rs | ||
cabi_x86.rs | ||
callee.rs | ||
Cargo.toml | ||
cleanup.rs | ||
closure.rs | ||
collector.rs | ||
common.rs | ||
consts.rs | ||
context.rs | ||
declare.rs | ||
diagnostics.rs | ||
disr.rs | ||
glue.rs | ||
intrinsic.rs | ||
lib.rs | ||
machine.rs | ||
macros.rs | ||
meth.rs | ||
monomorphize.rs | ||
partitioning.rs | ||
README.txt | ||
symbol_map.rs | ||
symbol_names_test.rs | ||
trans_item.rs | ||
tvec.rs | ||
type_.rs | ||
type_of.rs | ||
value.rs |
See the README.md in ../librustc.