Skip to content

Alamvic/druid

Repository files navigation

Druid: The magical compiler infraestructure

Druid implements an optimizing compiler infraestructures to develop compilers in Pharo. The core includes an Intermediate Representation in SSA form and Optimizations that manipulate it. The goal of these project is to reuse the IR and optimization implementations between different compilers made in Pharo.

You can inspect the IR, visualize the Control Flog Graph and interact with the Instructions.

image

Implementations

Currently, Druid is used in two compiler implementations:

  • Druid - Cogit: a metacompiler to generate the Baseline JIT Compiler of the Pharo VM from its Interpreter. Read more here

  • Druid - Opal: an optimizing bytecode compiler for Pharo. Read more here

Getting started

You can install the core by running

Metacello new
	repository: 'github://Alamvic/druid:main';
	baseline: 'Druid';
	load: 'Core' 

To contribute to any compiler implementation, check the installation page.

Research

Druid is part of research papers and thesis

How to contribute?

For questions and bug reports, please open an issue.

If you already have something implemented, we would love to receive a Pull Request.

You can contact us in the Pharo Discord.

About

Metacompiler to generate an optimised JIT compiler frontend based on an Interpreter definition

Topics

Resources

Stars

Watchers

Forks

Contributors