about summary refs log tree commit diff
diff options
context:
space:
mode:
authorAleksey Kladov <aleksey.kladov@gmail.com>2021-01-14 18:47:42 +0300
committerAleksey Kladov <aleksey.kladov@gmail.com>2021-01-14 19:06:02 +0300
commit4c4e54ac8a9782439744fe15aa31a3bedab92b74 (patch)
tree6f1653b0d60298cd2932fe7c3ba4cc802f7e8b14
parentaeacaeed4e49dd71ba0de30a21d9f3d1cc153cec (diff)
downloadrust-4c4e54ac8a9782439744fe15aa31a3bedab92b74.tar.gz
rust-4c4e54ac8a9782439744fe15aa31a3bedab92b74.zip
prepare to publish el libro de arena
-rw-r--r--Cargo.lock24
-rw-r--r--Cargo.toml2
-rw-r--r--crates/hir_def/Cargo.toml2
-rw-r--r--crates/hir_def/src/adt.rs2
-rw-r--r--crates/hir_def/src/attr.rs2
-rw-r--r--crates/hir_def/src/body.rs2
-rw-r--r--crates/hir_def/src/body/lower.rs2
-rw-r--r--crates/hir_def/src/body/scope.rs2
-rw-r--r--crates/hir_def/src/db.rs2
-rw-r--r--crates/hir_def/src/expr.rs2
-rw-r--r--crates/hir_def/src/generics.rs2
-rw-r--r--crates/hir_def/src/item_tree.rs2
-rw-r--r--crates/hir_def/src/lib.rs2
-rw-r--r--crates/hir_def/src/nameres.rs2
-rw-r--r--crates/hir_def/src/nameres/collector.rs2
-rw-r--r--crates/hir_def/src/src.rs2
-rw-r--r--crates/hir_def/src/trace.rs2
-rw-r--r--crates/hir_expand/Cargo.toml2
-rw-r--r--crates/hir_expand/src/ast_id_map.rs2
-rw-r--r--crates/hir_ty/Cargo.toml2
-rw-r--r--crates/hir_ty/src/db.rs2
-rw-r--r--crates/hir_ty/src/diagnostics/match_check.rs2
-rw-r--r--crates/hir_ty/src/infer.rs2
-rw-r--r--crates/hir_ty/src/lower.rs2
-rw-r--r--crates/profile/Cargo.toml3
-rw-r--r--crates/profile/src/tree.rs4
-rw-r--r--crates/project_model/Cargo.toml2
-rw-r--r--crates/project_model/src/cargo_workspace.rs2
-rw-r--r--crates/project_model/src/sysroot.rs2
-rw-r--r--lib/README.md2
-rw-r--r--lib/arena/Cargo.toml (renamed from crates/arena/Cargo.toml)6
-rw-r--r--lib/arena/src/lib.rs (renamed from crates/arena/src/lib.rs)0
-rw-r--r--lib/arena/src/map.rs (renamed from crates/arena/src/map.rs)0
33 files changed, 49 insertions, 42 deletions
diff --git a/Cargo.lock b/Cargo.lock
index ae99b966ea1..c715e5e0bbe 100644
--- a/Cargo.lock
+++ b/Cargo.lock
@@ -37,10 +37,6 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
 checksum = "33954243bd79057c2de7338850b85983a44588021f8a5fee574a8888c6de4344"
 
 [[package]]
-name = "arena"
-version = "0.0.0"
-
-[[package]]
 name = "arrayvec"
 version = "0.5.2"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -547,7 +543,6 @@ name = "hir_def"
 version = "0.0.0"
 dependencies = [
  "anymap",
- "arena",
  "base_db",
  "cfg",
  "drop_bomb",
@@ -557,6 +552,7 @@ dependencies = [
  "hir_expand",
  "indexmap",
  "itertools 0.10.0",
+ "la-arena 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "log",
  "mbe",
  "once_cell",
@@ -573,9 +569,9 @@ dependencies = [
 name = "hir_expand"
 version = "0.0.0"
 dependencies = [
- "arena",
  "base_db",
  "either",
+ "la-arena 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "log",
  "mbe",
  "parser",
@@ -590,7 +586,6 @@ dependencies = [
 name = "hir_ty"
 version = "0.0.0"
 dependencies = [
- "arena",
  "arrayvec",
  "base_db",
  "chalk-ir",
@@ -601,6 +596,7 @@ dependencies = [
  "hir_def",
  "hir_expand",
  "itertools 0.10.0",
+ "la-arena 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "log",
  "once_cell",
  "profile",
@@ -772,6 +768,16 @@ dependencies = [
 ]
 
 [[package]]
+name = "la-arena"
+version = "0.1.0"
+
+[[package]]
+name = "la-arena"
+version = "0.1.0"
+source = "registry+https://github.com/rust-lang/crates.io-index"
+checksum = "b0385ab3b926cc05c78275d7ac6799c21fb964ada0a45cdaeaf1415d6a3dda39"
+
+[[package]]
 name = "lazy_static"
 version = "1.4.0"
 source = "registry+https://github.com/rust-lang/crates.io-index"
@@ -1196,8 +1202,8 @@ version = "0.0.0"
 name = "profile"
 version = "0.0.0"
 dependencies = [
- "arena",
  "cfg-if 1.0.0",
+ "la-arena 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "libc",
  "once_cell",
  "perf-event",
@@ -1208,11 +1214,11 @@ name = "project_model"
 version = "0.0.0"
 dependencies = [
  "anyhow",
- "arena",
  "base_db",
  "cargo_metadata",
  "cfg",
  "itertools 0.10.0",
+ "la-arena 0.1.0 (registry+https://github.com/rust-lang/crates.io-index)",
  "log",
  "paths",
  "proc_macro_api",
diff --git a/Cargo.toml b/Cargo.toml
index 59d36fbc1d1..ff0d9e1ce17 100644
--- a/Cargo.toml
+++ b/Cargo.toml
@@ -1,5 +1,5 @@
 [workspace]
-members = [ "crates/*", "xtask/" ]
+members = [ "xtask/", "lib/*", "crates/*" ]
 
 [profile.dev]
 # Disabling debug info speeds up builds a bunch,
diff --git a/crates/hir_def/Cargo.toml b/crates/hir_def/Cargo.toml
index 7ef966cd225..5d21283f7d7 100644
--- a/crates/hir_def/Cargo.toml
+++ b/crates/hir_def/Cargo.toml
@@ -20,9 +20,9 @@ fst = { version = "0.4", default-features = false }
 itertools = "0.10.0"
 indexmap = "1.4.0"
 smallvec = "1.4.0"
+la-arena = "0.1.0"
 
 stdx = { path = "../stdx", version = "0.0.0" }
-arena = { path = "../arena", version = "0.0.0" }
 base_db = { path = "../base_db", version = "0.0.0" }
 syntax = { path = "../syntax", version = "0.0.0" }
 profile = { path = "../profile", version = "0.0.0" }
diff --git a/crates/hir_def/src/adt.rs b/crates/hir_def/src/adt.rs
index 236d6f1b7c9..237c3d3f99e 100644
--- a/crates/hir_def/src/adt.rs
+++ b/crates/hir_def/src/adt.rs
@@ -2,13 +2,13 @@
 
 use std::sync::Arc;
 
-use arena::{map::ArenaMap, Arena};
 use base_db::CrateId;
 use either::Either;
 use hir_expand::{
     name::{AsName, Name},
     InFile,
 };
+use la_arena::{map::ArenaMap, Arena};
 use syntax::ast::{self, NameOwner, VisibilityOwner};
 use tt::{Delimiter, DelimiterKind, Leaf, Subtree, TokenTree};
 
diff --git a/crates/hir_def/src/attr.rs b/crates/hir_def/src/attr.rs
index 9e6426b3148..5a86823c267 100644
--- a/crates/hir_def/src/attr.rs
+++ b/crates/hir_def/src/attr.rs
@@ -2,12 +2,12 @@
 
 use std::{ops, sync::Arc};
 
-use arena::map::ArenaMap;
 use base_db::CrateId;
 use cfg::{CfgExpr, CfgOptions};
 use either::Either;
 use hir_expand::{hygiene::Hygiene, name::AsName, AstId, InFile};
 use itertools::Itertools;
+use la_arena::map::ArenaMap;
 use mbe::ast_to_token_tree;
 use syntax::{
     ast::{self, AstNode, AttrsOwner},
diff --git a/crates/hir_def/src/body.rs b/crates/hir_def/src/body.rs
index d07004b9d7c..43ee572779d 100644
--- a/crates/hir_def/src/body.rs
+++ b/crates/hir_def/src/body.rs
@@ -8,7 +8,6 @@ pub mod scope;
 
 use std::{mem, ops::Index, sync::Arc};
 
-use arena::{map::ArenaMap, Arena};
 use base_db::CrateId;
 use cfg::CfgOptions;
 use drop_bomb::DropBomb;
@@ -17,6 +16,7 @@ use hir_expand::{
     ast_id_map::AstIdMap, diagnostics::DiagnosticSink, hygiene::Hygiene, AstId, ExpandResult,
     HirFileId, InFile, MacroDefId,
 };
+use la_arena::{map::ArenaMap, Arena};
 use rustc_hash::FxHashMap;
 use syntax::{ast, AstNode, AstPtr};
 use test_utils::mark;
diff --git a/crates/hir_def/src/body/lower.rs b/crates/hir_def/src/body/lower.rs
index 3dc33f248fa..27575c53719 100644
--- a/crates/hir_def/src/body/lower.rs
+++ b/crates/hir_def/src/body/lower.rs
@@ -3,13 +3,13 @@
 
 use std::{any::type_name, sync::Arc};
 
-use arena::Arena;
 use either::Either;
 use hir_expand::{
     hygiene::Hygiene,
     name::{name, AsName, Name},
     ExpandError, HirFileId, MacroDefId, MacroDefKind,
 };
+use la_arena::Arena;
 use rustc_hash::FxHashMap;
 use syntax::{
     ast::{
diff --git a/crates/hir_def/src/body/scope.rs b/crates/hir_def/src/body/scope.rs
index 065785da7fa..49f1427b45e 100644
--- a/crates/hir_def/src/body/scope.rs
+++ b/crates/hir_def/src/body/scope.rs
@@ -1,8 +1,8 @@
 //! Name resolution for expressions.
 use std::sync::Arc;
 
-use arena::{Arena, Idx};
 use hir_expand::name::Name;
+use la_arena::{Arena, Idx};
 use rustc_hash::FxHashMap;
 
 use crate::{
diff --git a/crates/hir_def/src/db.rs b/crates/hir_def/src/db.rs
index d3bf5b34cf5..0506a727442 100644
--- a/crates/hir_def/src/db.rs
+++ b/crates/hir_def/src/db.rs
@@ -1,9 +1,9 @@
 //! Defines database & queries for name resolution.
 use std::sync::Arc;
 
-use arena::map::ArenaMap;
 use base_db::{salsa, CrateId, SourceDatabase, Upcast};
 use hir_expand::{db::AstDatabase, HirFileId};
+use la_arena::map::ArenaMap;
 use syntax::SmolStr;
 
 use crate::{
diff --git a/crates/hir_def/src/expr.rs b/crates/hir_def/src/expr.rs
index 76f5721e587..af01d32dcb1 100644
--- a/crates/hir_def/src/expr.rs
+++ b/crates/hir_def/src/expr.rs
@@ -12,8 +12,8 @@
 //!
 //! See also a neighboring `body` module.
 
-use arena::{Idx, RawId};
 use hir_expand::name::Name;
+use la_arena::{Idx, RawId};
 use syntax::ast::RangeOp;
 
 use crate::{
diff --git a/crates/hir_def/src/generics.rs b/crates/hir_def/src/generics.rs
index 9b5b886c2bb..75eab791a2a 100644
--- a/crates/hir_def/src/generics.rs
+++ b/crates/hir_def/src/generics.rs
@@ -4,13 +4,13 @@
 //! in rustc.
 use std::sync::Arc;
 
-use arena::{map::ArenaMap, Arena};
 use base_db::FileId;
 use either::Either;
 use hir_expand::{
     name::{name, AsName, Name},
     InFile,
 };
+use la_arena::{map::ArenaMap, Arena};
 use syntax::ast::{self, GenericParamsOwner, NameOwner, TypeBoundsOwner};
 
 use crate::{
diff --git a/crates/hir_def/src/item_tree.rs b/crates/hir_def/src/item_tree.rs
index b6f51073134..91e42aa0da7 100644
--- a/crates/hir_def/src/item_tree.rs
+++ b/crates/hir_def/src/item_tree.rs
@@ -11,7 +11,6 @@ use std::{
     sync::Arc,
 };
 
-use arena::{Arena, Idx, RawId};
 use ast::{AstNode, NameOwner, StructKind};
 use base_db::CrateId;
 use either::Either;
@@ -21,6 +20,7 @@ use hir_expand::{
     name::{name, AsName, Name},
     HirFileId, InFile,
 };
+use la_arena::{Arena, Idx, RawId};
 use rustc_hash::FxHashMap;
 use smallvec::SmallVec;
 use syntax::{ast, match_ast};
diff --git a/crates/hir_def/src/lib.rs b/crates/hir_def/src/lib.rs
index 211cb2fafc0..08ed920c60a 100644
--- a/crates/hir_def/src/lib.rs
+++ b/crates/hir_def/src/lib.rs
@@ -52,12 +52,12 @@ mod test_db;
 
 use std::hash::{Hash, Hasher};
 
-use arena::Idx;
 use base_db::{impl_intern_key, salsa, CrateId};
 use hir_expand::{
     ast_id_map::FileAstId, eager::expand_eager_macro, hygiene::Hygiene, AstId, HirFileId, InFile,
     MacroCallId, MacroCallKind, MacroDefId, MacroDefKind,
 };
+use la_arena::Idx;
 use syntax::ast;
 
 use crate::builtin_type::BuiltinType;
diff --git a/crates/hir_def/src/nameres.rs b/crates/hir_def/src/nameres.rs
index 5682e122dbd..50acc3f54fa 100644
--- a/crates/hir_def/src/nameres.rs
+++ b/crates/hir_def/src/nameres.rs
@@ -56,9 +56,9 @@ mod tests;
 
 use std::sync::Arc;
 
-use arena::Arena;
 use base_db::{CrateId, Edition, FileId};
 use hir_expand::{diagnostics::DiagnosticSink, name::Name, InFile};
+use la_arena::Arena;
 use rustc_hash::FxHashMap;
 use stdx::format_to;
 use syntax::ast;
diff --git a/crates/hir_def/src/nameres/collector.rs b/crates/hir_def/src/nameres/collector.rs
index f027fd48d35..0cd61698ced 100644
--- a/crates/hir_def/src/nameres/collector.rs
+++ b/crates/hir_def/src/nameres/collector.rs
@@ -1469,8 +1469,8 @@ impl ModCollector<'_, '_> {
 #[cfg(test)]
 mod tests {
     use crate::{db::DefDatabase, test_db::TestDB};
-    use arena::Arena;
     use base_db::{fixture::WithFixture, SourceDatabase};
+    use la_arena::Arena;
 
     use super::*;
 
diff --git a/crates/hir_def/src/src.rs b/crates/hir_def/src/src.rs
index f67244b4647..eb29265d9e7 100644
--- a/crates/hir_def/src/src.rs
+++ b/crates/hir_def/src/src.rs
@@ -1,7 +1,7 @@
 //! Utilities for mapping between hir IDs and the surface syntax.
 
-use arena::map::ArenaMap;
 use hir_expand::InFile;
+use la_arena::map::ArenaMap;
 
 use crate::{db::DefDatabase, item_tree::ItemTreeNode, AssocItemLoc, ItemLoc};
 
diff --git a/crates/hir_def/src/trace.rs b/crates/hir_def/src/trace.rs
index fd64e701888..0a9beae8ef2 100644
--- a/crates/hir_def/src/trace.rs
+++ b/crates/hir_def/src/trace.rs
@@ -9,7 +9,7 @@
 //! absolute offsets. The `Trace` structure (inspired, at least in name, by
 //! Kotlin's `BindingTrace`) allows use the same code to compute both
 //! projections.
-use arena::{map::ArenaMap, Arena, Idx, RawId};
+use la_arena::{map::ArenaMap, Arena, Idx, RawId};
 
 pub(crate) struct Trace<T, V> {
     arena: Option<Arena<T>>,
diff --git a/crates/hir_expand/Cargo.toml b/crates/hir_expand/Cargo.toml
index 9fad2ab9465..b535a3d4f77 100644
--- a/crates/hir_expand/Cargo.toml
+++ b/crates/hir_expand/Cargo.toml
@@ -13,8 +13,8 @@ doctest = false
 log = "0.4.8"
 either = "1.5.3"
 rustc-hash = "1.0.0"
+la-arena = "0.1.0"
 
-arena = { path = "../arena", version = "0.0.0" }
 base_db = { path = "../base_db", version = "0.0.0" }
 syntax = { path = "../syntax", version = "0.0.0" }
 parser = { path = "../parser", version = "0.0.0" }
diff --git a/crates/hir_expand/src/ast_id_map.rs b/crates/hir_expand/src/ast_id_map.rs
index f63629b3053..f4f6e11fdbe 100644
--- a/crates/hir_expand/src/ast_id_map.rs
+++ b/crates/hir_expand/src/ast_id_map.rs
@@ -12,7 +12,7 @@ use std::{
     marker::PhantomData,
 };
 
-use arena::{Arena, Idx};
+use la_arena::{Arena, Idx};
 use syntax::{ast, AstNode, AstPtr, SyntaxNode, SyntaxNodePtr};
 
 /// `AstId` points to an AST node in a specific file.
diff --git a/crates/hir_ty/Cargo.toml b/crates/hir_ty/Cargo.toml
index b0a453961e8..436c1405b3c 100644
--- a/crates/hir_ty/Cargo.toml
+++ b/crates/hir_ty/Cargo.toml
@@ -20,11 +20,11 @@ scoped-tls = "1"
 chalk-solve = { version = "0.47", default-features = false }
 chalk-ir = "0.47"
 chalk-recursive = "0.47"
+la-arena = "0.1.0"
 
 stdx = { path = "../stdx", version = "0.0.0" }
 hir_def = { path = "../hir_def", version = "0.0.0" }
 hir_expand = { path = "../hir_expand", version = "0.0.0" }
-arena = { path = "../arena", version = "0.0.0" }
 base_db = { path = "../base_db", version = "0.0.0" }
 profile = { path = "../profile", version = "0.0.0" }
 syntax = { path = "../syntax", version = "0.0.0" }
diff --git a/crates/hir_ty/src/db.rs b/crates/hir_ty/src/db.rs
index f3567c49e6c..b0e2a3b7d88 100644
--- a/crates/hir_ty/src/db.rs
+++ b/crates/hir_ty/src/db.rs
@@ -2,12 +2,12 @@
 
 use std::sync::Arc;
 
-use arena::map::ArenaMap;
 use base_db::{impl_intern_key, salsa, CrateId, Upcast};
 use hir_def::{
     db::DefDatabase, expr::ExprId, ConstParamId, DefWithBodyId, FunctionId, GenericDefId, ImplId,
     LocalFieldId, TypeParamId, VariantId,
 };
+use la_arena::map::ArenaMap;
 
 use crate::{
     method_resolution::{InherentImpls, TraitImpls},
diff --git a/crates/hir_ty/src/diagnostics/match_check.rs b/crates/hir_ty/src/diagnostics/match_check.rs
index 61c47eec876..fbe760c39eb 100644
--- a/crates/hir_ty/src/diagnostics/match_check.rs
+++ b/crates/hir_ty/src/diagnostics/match_check.rs
@@ -218,13 +218,13 @@
 //!   ```
 use std::{iter, sync::Arc};
 
-use arena::Idx;
 use hir_def::{
     adt::VariantData,
     body::Body,
     expr::{Expr, Literal, Pat, PatId},
     AdtId, EnumVariantId, StructId, VariantId,
 };
+use la_arena::Idx;
 use smallvec::{smallvec, SmallVec};
 
 use crate::{db::HirDatabase, ApplicationTy, InferenceResult, Ty, TypeCtor};
diff --git a/crates/hir_ty/src/infer.rs b/crates/hir_ty/src/infer.rs
index a14d67c066a..46a806b9acb 100644
--- a/crates/hir_ty/src/infer.rs
+++ b/crates/hir_ty/src/infer.rs
@@ -18,7 +18,6 @@ use std::mem;
 use std::ops::Index;
 use std::sync::Arc;
 
-use arena::map::ArenaMap;
 use hir_def::{
     body::Body,
     data::{ConstData, FunctionData, StaticData},
@@ -31,6 +30,7 @@ use hir_def::{
     TypeAliasId, VariantId,
 };
 use hir_expand::{diagnostics::DiagnosticSink, name::name};
+use la_arena::map::ArenaMap;
 use rustc_hash::FxHashMap;
 use stdx::impl_from;
 use syntax::SmolStr;
diff --git a/crates/hir_ty/src/lower.rs b/crates/hir_ty/src/lower.rs
index 9594cce8b7f..68d16f89a96 100644
--- a/crates/hir_ty/src/lower.rs
+++ b/crates/hir_ty/src/lower.rs
@@ -7,7 +7,6 @@
 //! This usually involves resolving names, collecting generic arguments etc.
 use std::{iter, sync::Arc};
 
-use arena::map::ArenaMap;
 use base_db::CrateId;
 use hir_def::{
     adt::StructKind,
@@ -21,6 +20,7 @@ use hir_def::{
     TypeAliasId, TypeParamId, UnionId, VariantId,
 };
 use hir_expand::name::Name;
+use la_arena::map::ArenaMap;
 use smallvec::SmallVec;
 use stdx::impl_from;
 use test_utils::mark;
diff --git a/crates/profile/Cargo.toml b/crates/profile/Cargo.toml
index 4951f1835cf..096233a0958 100644
--- a/crates/profile/Cargo.toml
+++ b/crates/profile/Cargo.toml
@@ -13,8 +13,7 @@ doctest = false
 once_cell = "1.3.1"
 cfg-if = "1"
 libc = "0.2.73"
-
-arena = { path = "../arena", version = "0.0.0" }
+la-arena = "0.1.0"
 
 [target.'cfg(target_os = "linux")'.dependencies]
 perf-event = "0.4"
diff --git a/crates/profile/src/tree.rs b/crates/profile/src/tree.rs
index 3fac1f36c94..62f0c30b529 100644
--- a/crates/profile/src/tree.rs
+++ b/crates/profile/src/tree.rs
@@ -1,7 +1,7 @@
 //! A simple tree implementation which tries to not allocate all over the place.
 use std::ops;
 
-use arena::Arena;
+use la_arena::Arena;
 
 #[derive(Default)]
 pub(crate) struct Tree<T> {
@@ -9,7 +9,7 @@ pub(crate) struct Tree<T> {
     current_path: Vec<(Idx<T>, Option<Idx<T>>)>,
 }
 
-pub(crate) type Idx<T> = arena::Idx<Node<T>>;
+pub(crate) type Idx<T> = la_arena::Idx<Node<T>>;
 
 impl<T> Tree<T> {
     pub(crate) fn start(&mut self)
diff --git a/crates/project_model/Cargo.toml b/crates/project_model/Cargo.toml
index 855fb83eaf3..51e7a7070f3 100644
--- a/crates/project_model/Cargo.toml
+++ b/crates/project_model/Cargo.toml
@@ -17,8 +17,8 @@ serde = { version = "1.0.106", features = ["derive"] }
 serde_json = "1.0.48"
 anyhow = "1.0.26"
 itertools = "0.10.0"
+la-arena = "0.1.0"
 
-arena = { path = "../arena", version = "0.0.0" }
 cfg = { path = "../cfg", version = "0.0.0" }
 base_db = { path = "../base_db", version = "0.0.0" }
 toolchain = { path = "../toolchain", version = "0.0.0" }
diff --git a/crates/project_model/src/cargo_workspace.rs b/crates/project_model/src/cargo_workspace.rs
index a1ab9c6db57..c0ed37fc128 100644
--- a/crates/project_model/src/cargo_workspace.rs
+++ b/crates/project_model/src/cargo_workspace.rs
@@ -10,10 +10,10 @@ use std::{
 };
 
 use anyhow::{Context, Result};
-use arena::{Arena, Idx};
 use base_db::Edition;
 use cargo_metadata::{BuildScript, CargoOpt, Message, MetadataCommand, PackageId};
 use itertools::Itertools;
+use la_arena::{Arena, Idx};
 use paths::{AbsPath, AbsPathBuf};
 use rustc_hash::FxHashMap;
 use stdx::JodChild;
diff --git a/crates/project_model/src/sysroot.rs b/crates/project_model/src/sysroot.rs
index 95b622715fd..ff44dae4a20 100644
--- a/crates/project_model/src/sysroot.rs
+++ b/crates/project_model/src/sysroot.rs
@@ -7,7 +7,7 @@
 use std::{convert::TryFrom, env, ops, path::PathBuf, process::Command};
 
 use anyhow::{format_err, Result};
-use arena::{Arena, Idx};
+use la_arena::{Arena, Idx};
 use paths::{AbsPath, AbsPathBuf};
 
 use crate::utf8_stdout;
diff --git a/lib/README.md b/lib/README.md
new file mode 100644
index 00000000000..6b2eeac2c0d
--- /dev/null
+++ b/lib/README.md
@@ -0,0 +1,2 @@
+Crates in this directory are published to crates.io and obey semver.
+They *could* live in a separate repo, but we want to experiment with a monorepo setup.
diff --git a/crates/arena/Cargo.toml b/lib/arena/Cargo.toml
index 863eedf7691..183a5bb6a9a 100644
--- a/crates/arena/Cargo.toml
+++ b/lib/arena/Cargo.toml
@@ -1,7 +1,7 @@
 [package]
-name = "arena"
-version = "0.0.0"
-description = "TBD"
+name = "la-arena"
+version = "0.1.0"
+description = "Thy rope of sands..."
 license = "MIT OR Apache-2.0"
 authors = ["rust-analyzer developers"]
 edition = "2018"
diff --git a/crates/arena/src/lib.rs b/lib/arena/src/lib.rs
index 3169aa5b8cc..3169aa5b8cc 100644
--- a/crates/arena/src/lib.rs
+++ b/lib/arena/src/lib.rs
diff --git a/crates/arena/src/map.rs b/lib/arena/src/map.rs
index 0f33907c0ae..0f33907c0ae 100644
--- a/crates/arena/src/map.rs
+++ b/lib/arena/src/map.rs