Giter VIP home page Giter VIP logo

refinery's Introduction

Refinery

Refinery is a work-in-progress application for exploring UEFI environments. It is currently a very simple C application amounting to a VGA text-mode "hello world." I plan to replace the C application with a Common Lisp application before developing it further.

Common Lisp is not a natively supported language for UEFI systems. I'm designing and implementing a lisp virtual machine tailored to UEFI, partly to avoid writing large amounts of asynchronous, tediously error-checked C, and partly for the fun of implementing an entire language stack.

Borax

The lisp implementation for Refinery is named "Borax" after the mineral used as a flux in metallurgy. The design of Borax is itself in flux (๐Ÿ˜‰) but at a high level the plan is to organize the implementation into a virtual machine with two implementations: one in C and one in lisp. This should enable developing as much of the system as possible in lisp itself, with the aid of an existing hosted lisp implementation (in practice, SBCL).

The design, such as it currently is, is explained mainly through the comments in the header files under BoraxPkg/Include/Library. To briefly summarize:

  1. BoraxMemory.h describes the design and implementation of the allocator and garbage collector.
  2. BoraxObjectFile.h describes the ELF-like intermediate format that will be used to prepare and load lisp images and compiled files.
  3. BoraxVirtualMachine.h describes the bytecode language the virtual machine will interpret (the current plan is for Borax to be a compiled-only implementation).

Building and testing

Refinery is a UEFI application written against the TianoCore EDK II API. The C components of Refinery and Borax are only designed to be buildable by the edk2 build system. To this end, the uefi-workspace repository vendors the refinery repository, edk2, and in future any other build dependencies. The uefi-workspace repository also contains scripts for setting up the development environment, building the software, and running tests.

refinery's People

Contributors

sjolsen avatar

Stargazers

Arnav Andrew Jose avatar

Watchers

 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.