enso/app/gui
Kaz Wesley d59710c3cd
Multi-process profiles. (#3395)
See: [#181837344](https://www.pivotaltracker.com/story/show/181837344).

I've separated this PR from some deeper changes I'm making to the profile format, because the changeset was getting too complex. The new APIs and tools in this PR are fully-implemented, except the profile format is too simplistic--it doesn't currently support headers that are needed to determine the relative timings of events from different processes.

- Adds basic support for profile files containing data collected by multiple processes.
- Implements `api_events_to_profile`, a tool for converting backend message logs (#3392) to the `profiler` format so they can be merged with frontend profiles (currently they can be merged with `cat`, but the next PR will introduce a merge tool).
- Introduces `message_beanpoles`, a simple tool that diagrams timing relationships between frontend and backend messages.

### Important Notes
- All TODOs introduced here will be addressed in the next PR that defines the new format.
- Introduced a new crate, `enso_profiler_enso_data`, to be used by profile consumers that need to refer to Enso application datatypes to interpret metadata.
- Introduced a `ProfileBuilder` abstraction for writing the JSON profile format; partially decouples the runtime event log structures from the format definition.
- Introducing the conversion performed for `ProfilerBuilder` uncovered that the `.._with_same_start!` low-level `profiler` APIs don't currently work; they return `Started<_>` profilers, but that is inconsistent with the stricter data model that I introduced when I implemented `profiler_data`; they need to return profilers in a created, unstarted state. Low-level async profilers have not been a priority, but once #3382 merges we'll have a way to render their data, which will be really useful because async profilers capture *why* we're doing things. I'll bring up scheduling this in the next performance meeting.
2022-04-21 16:44:03 +02:00
..
analytics Linting codebase 2022-03-10 05:32:33 +01:00
config Linting codebase 2022-03-10 05:32:33 +01:00
controller Update electron-builder to v23.0.6 (#3410) 2022-04-21 11:36:32 +00:00
docs Fix prettier formatting. Also, a typo. 2022-04-19 08:05:30 +02:00
enso-profiler-enso-data Multi-process profiles. (#3395) 2022-04-21 16:44:03 +02:00
language The EnsoGL Component abstraction with special dropping behavior (#3322) 2022-04-04 15:55:55 +00:00
src Integrate Ensogl stats with profiling framework (#3388) 2022-04-21 09:38:26 +00:00
tests Fixing build. 2022-03-10 06:21:57 +01:00
view Update electron-builder to v23.0.6 (#3410) 2022-04-21 11:36:32 +00:00
Cargo.toml Bump Rust toolchain to nightly-2022-01-20. (#3255) 2022-02-16 12:58:02 +00:00
config.yaml Refactor gui/src/rust/ide to two app/gui and app/ide-desktop (#3157) 2021-11-16 10:04:56 +01:00
LICENSE Refactor gui/src/rust/ide to two app/gui and app/ide-desktop (#3157) 2021-11-16 10:04:56 +01:00
README.md Fix links to gui folder (#3190) 2021-12-12 23:43:25 +01:00

This is the repository for Enso's graphical interface component. If you're looking for the main product repository, you may find it at at 👉 github.com/enso-org/enso 👈


Enso IDE

Overview

Chat License License

Enso is an award-winning interactive programming language with dual visual and textual representations. It is a tool that spans the entire stack, going from high-level visualisation and communication to the nitty-gritty of backend services, all in a single language. Watch the following introduction video to learn what Enso is, and how it helps companies build data workflows in minutes instead of weeks.

This repository contains the source code of Enso interface only. If you are interested in how the interface is build or you want to develop it with us, you are in the right place. See the development and contributing guidelines to learn more about the code structure and the development process.


Getting Started

Enso is distributed both in form of pre-build packages for MacOS, Windows, or Linux, as well as the source code. See the demo scenes, and read the documentation to learn more.

Currently to start IDE you have to run Enso Project Manager first. For more information and packages see Enso repository.


Building

The project builds on MacOS, Linux, and Windows. Simply run node ./run build to build it and use node ./run --help to learn about other available commands and options. Read the detailed development guide to learn more.


License

The Enso Language Compiler is released under the terms of the Apache v2 License. The Enso Graphical Interface and it's rendering engine are released under the terms of the AGPL v3 License. This license set was choosen to both provide you with a complete freedom to use Enso, create libraries, and release them under any license of your choice, while also allowing us to release commercial products on top of the platform, including Enso Cloud and Enso Enterprise on-premise server managers.


Contributing

Enso is a community-driven open source project which is and will always be open and free to use. We are committed to a fully transparent development process and highly appreciate every contribution. If you love the vision behind Enso and you want to redefine the data processing world, join us and help us track down bugs, implement new features, improve the documentation or spread the word! Join our community on a Discord chat and read the development and contributing guidelines.