2020-07-06 13:09:54 +03:00
|
|
|
# Repository Structure Overview
|
|
|
|
|
|
|
|
* `build` - Helper JS scripts used by `run` script in the main directory.
|
|
|
|
* `docs` - Documentation.
|
2020-08-14 10:23:03 +03:00
|
|
|
* `src/js` - The JS part of IDE application.
|
2020-07-06 13:09:54 +03:00
|
|
|
* `src/rust` - All Rust crates.
|
|
|
|
|
|
|
|
## Crates
|
|
|
|
|
2020-07-16 10:50:31 +03:00
|
|
|
The crates structure is currently in process of refactoring, and there are still
|
|
|
|
places where code does not fit the crate it is placed. The work is tracked in
|
|
|
|
#448 epic.
|
2020-07-06 13:09:54 +03:00
|
|
|
|
2020-07-16 10:50:31 +03:00
|
|
|
The detailed description of each crate is placed in its documentation at top
|
|
|
|
of its `lib.rs` file.
|
2020-07-06 13:09:54 +03:00
|
|
|
|
2020-07-16 10:50:31 +03:00
|
|
|
There are two main parts of our codebase: **EnsoGL library** and the **Enso
|
|
|
|
IDE application**. The crates used in common by those parts are put in `src
|
|
|
|
/rust/lib`, and should be documented at the top of their `lib.rs` file.
|
2020-07-06 13:09:54 +03:00
|
|
|
|
2020-07-16 10:50:31 +03:00
|
|
|
Other crates usually contains code shared by those two. The one noteworthy
|
|
|
|
is the **prelude** crate (`src/rust/prelude`) which gathers the commonly used
|
|
|
|
imports across all crates in our repository.
|
2020-07-06 13:09:54 +03:00
|
|
|
|
|
|
|
### EnsoGL (`src/rust/ensogl`)
|
|
|
|
|
|
|
|
EnsoGL is a library providing fast 2D vector rendering engine with a rich set of
|
2020-07-16 10:50:31 +03:00
|
|
|
primitives and high-level GUI components. Its structure will be described after
|
|
|
|
the planned refactoring in #598.
|
2020-07-06 13:09:54 +03:00
|
|
|
|
|
|
|
|
|
|
|
### Enso IDE (`src/rust/ide`)
|
|
|
|
|
2020-07-16 10:50:31 +03:00
|
|
|
The Enso IDE crate contains entry point function of application, and
|
|
|
|
integrates two main parts of it:
|
|
|
|
* IDE View (`src/rust/ide/lib/view`) - The visual part of IDE. It contains
|
|
|
|
no logic and connections to backend - instead it delivers FRP endpoints to
|
|
|
|
be integrated with controllers. That design allow us to measure of vis-part
|
|
|
|
only performance.
|
|
|
|
* IDE Controllers (`src/rust/ide/lib/controller`) - The logic part of IDE,
|
|
|
|
that is synchronizing graph a text and communication with Engine. It
|
|
|
|
should not know anything about visual part. In the future we may consider
|
|
|
|
creating some sort of CLI for automatic integration tests.
|