GithubHelp home page GithubHelp logo

lithdew / alon Goto Github PK

View Code? Open in Web Editor NEW
99.0 6.0 13.0 44.02 MB

Remix for Solana.

Home Page: https://lithdew.github.io/alon/

License: Apache License 2.0

JavaScript 78.96% C 3.16% HTML 0.14% TypeScript 17.72% CSS 0.02%
solana solana-program bpf blockchain llvm webassembly hackathon-project

alon's Introduction

alon

Alon is an IDE which allows for developers to rapidly build, iterate, test, and deploy decentralized apps and assets on Solana right from their browser.

By writing a very thin compiler and linker frontend on top of a WebAssembly port of Solana’s compiler suite, and by writing a barebones JavaScript port of Solana’s program virtual machine syscalls, Alon is able to cut down the time it takes to compile, run, and test Solana programs down to a few hundred milliseconds.

The code editor for Alon comes with Treesitter integrated, which allows for Alon to incrementally build and update an entire syntax tree of your Solana programs in under a millisecond.

Integrating Treesitter into Alon's code editor allows for the development of all new kinds of static analysis tools that may help significantly simplify and speed up the development of reliable Solana programs.

project

Modules

Built With

  • React
  • Tailwind
  • Treesitter
  • Emscripten
  • Monaco Editor
  • LLVM w/ Solana BPF

getting started

Start a development server on port 3000:

$ yarn start

Build a release version of Alon:

$ yarn build

Deploy Alon on Github Pages:

$ yarn deploy

roadmap

  • Better code/file navigation
  • Keyboard navigation/shortcuts
  • Treesitter-based code completion
  • Port the clangd language server to WebAssembly
  • Support other languages such as Zig, Rust, and Solang
  • Completion of the UI for all of the static analysis tooling
  • Port all remaining subcommands of the Solana CLI to Alon's UI
  • Standalone executable to integrate Alon into your favorite editors
  • Deploy/upgrade programs on the UI using the Upgradeable BPF Loader Program
  • Port all remaining Solana program syscalls to Alon's WebAssembly-based test runner

license

alon, and all of its source code is released under the Apache License.

alon's People

Contributors

lithdew avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar

alon's Issues

Feature idea: also port Solana TX processing layer into WASM as a standalone sister project

Rationale:

  • Bring flexible simulation of program execution to the browser.
  • Could be a useful tool for testing on injected account inputs alongside live data
  • Better debugging/integration testing

Features:

  • RPC calls made to fetch account data from on-chain.
  • Either port rbpf VM and build javascript scafolding to handle syscalls/account loading/CPI, or build entire message processor alongside VM in WASM and expose message processing entrypoints that replace account fetches to the account DB with RPC calls.

Challenges:

  • Perfect recreation of message processor could be difficult if done in JS.
  • Key is where to draw the line between recreation of accurate node functionality and ignoring in favour of simplicity.

Links:

TypeError: Cannot set properties of undefined (setting 'apex')

TypeError: Cannot set properties of undefined (setting 'apex')
registerLanguage
node_modules/monaco-editor/esm/vs/basic-languages/_.contribution.js:42
39 | }
40 | export function registerLanguage(def) {
41 | var languageId = def.id;

42 | languageDefinitions[languageId] = def;
43 | languages.register(def);
44 | var lazyLanguageLoader = LazyLanguageLoader.getOrCreate(languageId);
45 | languages.setMonarchTokensProvider(languageId, lazyLanguageLoader.whenLoaded().then(function (mod) { return mod.language; }));
View compiled

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.