@mountbuild/flame v0.0.1
Summary
The Flame Project is the spark which initializes a XO application. It begins the cycle of computation for a given build, and runs indefinitely or until completion. It is made as a standalone library for executing XO code and OXO binaries so that it may be installed and used manually if desired. It creates a thin layer over a device, allowing you to execute all kinds of native methods from within an encapsulated binary.
The way this works is, for each platform, it generates a file with every method wrapped in our standard method wrapper for that platform, so that is callable dynamically. These methods are specified in bloom, which has the XO code containing most methods, functions, or instructions for each platform.
This is just in a preliminary phase. Still working on getting the first bit of code to compile. But wanted to release it as notes for now to keep people in the loop. Basically, these are code notes and you shouldn't expect too much from this yet. Keep an eye on it for later. If you want to take a look currently, here are some tips. The verse
folder is where all the code is. The verse/build
folder contains all the JavaScript "prototyping" code for bootstrapping the compiler. This code will eventually get removed when it can compile itself. The verse/build/shift
defines how to parse the tree of XO, while the rest of the files perform the compilation and writing of OXO and reading from OXO to start the flame.
JavaScript
In JavaScript, you can install it with Yarn or NPM.
npm install @mountbuild/flame
And use it like this:
const flame = require('@mountbuild/flame')
flame('./path-to-file.xo')
// or
flame('./path-to-file.oxo')
Swift
In Swift it is the same thing.
import Flame
flame('./path-to-file.xo')
Linux
#include <flame.h>
int
main() {
flame('./path-to-file.xo')
}
History
The Flame Project was used to develop the first XO compiler. In order to get a working XO program to read and execute XO code, it needed to have an initial build. Flame is that initial build. This is the key to having a runtime environment. It makes it possible to run completely encapsulated XO code in an optimized environment. It also exposes all of the devices features to the XO ecosystem so you can develop on top of it in a straightforward manner. It is the great initializer. Without finding this, it wouldn't have really been possible.
Todo
- Get JavaScript compiler generating OXO.
- Get JavaScript compiler reading OXO.
- Get JavaScript compiler evaluating actions from OXO.
- Get JavaScript compiler to generate flame.browser.js.
- Get JavaScript compiler to generate flame.macos.
- Get JavaScript compiler to generate flame.linux.
- Get JavaScript compiler to generate flame.windows.js.
- Implement compiler in XO.
- Toss JavaScript compiler.
Contribute
Contributions are greatly welcomed. See the contributor's guide. And here is a list of the contributors.
Also, track our release progress if you're interested!
License
Copyright 2020 Mount
Licensed under the Apache License, Version 2.0 (the "License"); you may not use this file except in compliance with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software distributed under the License is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
Mount
Flame is being developed by the folks at Mount, a California-based project for helping humanity master information and computation. Mount started off in the winter of 2008 as a spark of an idea, to forming a company 10 years later in the winter of 2018, to a seed of a project just beginning its development phases. Mount funds flame's development. It is entirely bootstrapped by working full time and running Etsy and Amazon shops. Also find us on Facebook, Twitter, and LinkedIn. Check out our other GitHub projects as well!
5 years ago