chigraph / Chigraph
Programming Languages
Projects that are alternatives of or similar to Chigraph
DISCLAIMER: CHIGRAPH IS IN PRE-PRE-PRE-PRE ALPHA STATUS AND MAY NEVER REACH A STABLE RELEASE. IT'S A TOY PROJECT AS A PROOF OF CONCEPT.
Build Status
Platform | Status |
---|---|
Linux/macOS | |
Windows | |
Buildbot (in development) | Buildbot |
What is chigraph?
Chigraph, pronunced chai-graph, is a new systems programming language. It's fast. It's scalable. And, more importantly, it's easy to learn. How does it achieve such goals? By scrapping the age-old standard of text (not entirely though). Here's a screenshot from the Qt5 GUI:
NOTE This is the repository for the chigraph language. If you are looking for the interface that goes along with it, see https://github.com/chigraph/chigraph-gui
Components
Chigraph is made up of three components:
chi
chi is the command line interface to chigraph. It lets you compile and run chigraph modules:
$ pwd
~/chigrpah/src/
$ chi get github.com/russelltg/hellochigraph/hello/main # download it
$ cd github.com/russelltg/hellochigraph/hello/main
$ chi run main.chimod # run it
Hello World!
libchigraph
libchigraph is the chigraph library that provides all functions for chigraph clients, like code generation, graph representation, etc. Want to compile a chigraph module using libchigraph? (documentation)
#include <chi/Context.hpp>
int main() {
chi::Contxt myContext{"/path/to/workspace"};
// download and load the module
myContxt.loadModule("github.com/russelltg/hellochigraph/hello/main", chi::LoadOptions::FetchDependencies);
// compile it
llvm::Module* mod;
myContxt.compileModule("github.com/russelltg/hellochigraph", &mod);
}
And tada, you have yourself a llvm::Module
to do whatever you wish to. It'll have all it's dependencies linked in and a main function waiting to run.
libchigraphdebugger
libchigraphdebugger is a library that makes it easy to implement chigraph debuggers. See the Debugger
documentation for more details.
Licensing
It's free! Chigraph is licensed under the Apache License 2.0 so anyone can use it for free, even in proprietary settings (solong you attribute me)
API Documentation
API Documentation (generated by doxygen) can be found here.
Installation
Download installers/appimage
Installers and appimages are avaliable from the releases page (coming soon) for those who don't want to build from sources.
Building from source
See the guide on building from source
Get Involved
Getting involved is easy! If you don't know where to get started, start looking at filed github issues for inspiration. Then just file a PR!
If you have any questions, you're more than welcome to email me: [email protected]
Authors
- Russell Greene (@russelltg) - Main contributor
- Aun-Ali Zaidi (@aunali1) - Helped with some platform stuff, packaging
Technology used
- LLVM/Clang for compilation
- libgit2 for downloading remote modules
- Catch for unit tests
- boost for filesystem, parsing program arguments, uuid, bimap, range, dynamic_bitset
Written with StackEdit.