Coder Social home page Coder Social logo

odin's Introduction

Maven Release

Odin (object dependency inspector) — a static analyzer for EO programming language.

⚠️🚧 Work in progress 🚧⚠️

The project is still in active development stage and might not be usable or fully documented yet.

Running

To run the project you will need sbt and JDK 8+.

Sandbox

As of now there is no app to run and interact with, but one can play with the source code of the analyzer in the sandbox project.

The entrypoint is in sandbox/src/main/scala/eo/sandbox/Sandbox.scala.

The sandbox can be run via:

sbt sandbox/run

Scala REPL

The source code can be ran in scala REPL via:

sbt console

This might be helpful for development.

Project structure

core project

Defines EO AST. All other projects should depend on this one.

backends project

Defines backends for the static analyzer. A backend is something that produces an output from AST.

eolang subproject

Backend that is able to generate EO program (now, roughly, represented as a list of strings) from EO AST.

utils project

Convenient tools that are used by other parts of the analyzer. This project must not depend on any other project.

sandbox project

Enables to interactively run and test source code of the analyzer. Facilitates the development and debug of the source code and enables to see intermediate results of the development. Any other project must not depend on it.

For more details on the project organization see:

  • build.sbt - main build configuration file
  • project/Dependendencies.scala - lists dependencies and versions for the projects
  • project/Compiler.scala - lists compiler flags used to compile the project and compiler plugins

Development

master branch has the latest changes and must always be buildable. All the code changes are done through sending pull requests to the repositories. After CI has successfully finished and a reviewer has approved changes, the code can be merged to the master branch.

CI

When a pull request is sent to master or a branch with a pull request to master is pushed, the following checks will run via GitHub Actions:

  • Build — all projects in the repository are built to check that the code compiles

  • Test — all tests are ran to check that new changes have not broken the existing functionality

  • Lint — run scalafix. If it fails run sbt scalafixAll and fix issues that are not autofixable manually.

    scalafix official documentation tells that SemanticDB compiler plugin with -Yrangepos flag adds overhead to the compilation, so it is recommended to create a local .jvmopts file with the following content:

      -Xss8m
      -Xms1G
      -Xmx8G
    
  • Check code formatting — the code formatting will be checked via scalafmt. If it fails run sbt scalafmtAll and commit the updated formatting.

For more information, see .github/workflows/ci.yml.

odin's People

Contributors

nikololiahim avatar sitiritis avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.