Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/dcascaval/lineage-based-cad-referencing
Implementation of "A Lineage-Based Referencing DSL for Computer-Aided Design", PLDI 2023
https://github.com/dcascaval/lineage-based-cad-referencing
Last synced: 1 day ago
JSON representation
Implementation of "A Lineage-Based Referencing DSL for Computer-Aided Design", PLDI 2023
- Host: GitHub
- URL: https://github.com/dcascaval/lineage-based-cad-referencing
- Owner: dcascaval
- Created: 2023-04-10T20:20:42.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2023-06-20T19:33:35.000Z (over 1 year ago)
- Last Synced: 2024-05-31T15:47:17.978Z (5 months ago)
- Language: Scala
- Size: 915 KB
- Stars: 6
- Watchers: 1
- Forks: 1
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
### Demo
A live hosted version of this code can be [found here](https://dcascaval.github.io/lineage/). Everything runs client-side.
### Documentation
Full documentation of the language and constructs can be found [here](language-docs.md).
### Setup
This project uses Scala 3.2.1 and Scala JS. We recommend installing with [Coursier](https://get-coursier.io/), which will also install SBT. You will also need NPM globally installed. To run the project, from the console:
```
sbt
> ~fastOptJS/webpack // Compiles to JS and watches for changes
```Then, open `index.html` in any browser. You will have to reload when changing scala sources. To reload automatically when sources change, run `./scripts/serve.sh`, which relies on the [`live-reload`](https://www.npmjs.com/package/live-reload) package, installable via `npm install -g live-reload` or `yarn global add live-reload`. If live-reloading, access the file at `localhost:4000` instead of directly.
### Outline
- `js/src/main/scala/elodin`
- `/dom` : DOM & SVG interaction library
- `/opt` : Our CAD System
- `/dsl` : Parser and AST definitions
- `main.scala` : Root, demos, tests
- `editor.scala` : UI & Integration
- `execute.scala` : Language interpreter
- `render3d.scala` : Rendering with Three JS & state management
- `programs.scala` : Example programs for the demos
- `types.scala` : Language type system and helpers
- `/three` : Context management for Three JS
- `usage.scala` : Root file- `shared/src/main/scala`
- `/geometry` : geometric types supported in the kernel
- `/opt`:
- `kernel.scala` : Geoemtric core
- `operations.scala` : Language operations with lineage logic
- `queries.scala` : Querying resolution implementation
- `reference.scala` : Lineage data structurs- `jvm/src/test/scala` : Miscellaneous tests