Coder Social home page Coder Social logo

build_exact's Introduction

Build Exact

This was an experiment I did to test the feasibility of making a simple build system in the style of Bazel - with precise dependency tracking.

This version uses Deno to describe the build graph and Rust to build it. I have a separate project (see the sandbox directory) to provide filesystem sandboxing so dependency links can't be missed.

Deno turned out to be a poor choice. One of the problems with build systems is that in general you can't know the full build graph (DAG) before you start building. For example if you generate come C++ code you're probably going to need to scan that code to see which headers it uses. Some of those might be generated too!

So you always need to be able to run a bit of build system code during the build. Given that it makes way more sense to choose a language that can be properly sandboxed itself. I have some half written code to switch to Starlark, which seems to be the most reasonable option at the moment (Bazel uses it). But I have abandoned this project.

I only abandoned it because of internal company politics. The ideas are good - you should use something like Bazel, Buck or Pants 2 if you are building anything remotely big.

build_exact's People

Contributors

timmmm avatar

Stargazers

 avatar

Watchers

 avatar  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.