back

by teleforce·5y ago·view on hn ↗
Very nicely written article. Kudos to the Shipreq team for having close to 100% offline or local-first feature, is Shipreq utilizing automerge library to do that?

It's mentioned in the article that Go has a very fast compilation time and the same can be said of D language. The reason they are fast to compile because the languages' authors design the languages to be compiler friendly unlike C++. One of the main tricks to being fast to compile is by avoiding symbols look-up table.

For one of the feasible solutions, perhaps Petri net is better than graph. It is a generic state machine mechanism and here are a few examples of having a compiler design using Petri Net approach[1][2].

[1] ZINC: a compiler for “any language”-coloured Petri nets, https://www.ibisc.univ-evry.fr/~fpommereau/publis/2018-01-01...

[2] Model, Design, and Evaluation of a Compiler for a Parallel Processing Environment, https://ieeexplore.ieee.org/document/1702471

1 comments
While it is true, C++ can also be quite compiler friendly, provided one is willing to invest into it.

"Lucid Energize Demo VHS 1993"

https://www.youtube.com/watch?v=pQQTScuApWk

Which makes use of a Lisp like image for C++.

https://dreamsongs.com/Files/Energize.pdf

Visual Age for C++, version 4.0, tried the same approach.

Both failed, due to the hardware requirements for the day.

C++ Builder was the survivor with some of this ideas and its specific C++ packages.

However, now with modules, incremental compilation and linking, expect modern C++ IDEs to finally come back to it.

This appears to be the ongoing roadmap for Visual C++, as per blog posts and some of their conference talks.

I expect other C++ IDE/compiler vendors to follow along.