https://github.com/glebbash/LO
Skip to content
Navigation Menu
Toggle navigation
Sign in
* Product
+
Actions
Automate any workflow
+
Packages
Host and manage packages
+
Security
Find and fix vulnerabilities
+
Codespaces
Instant dev environments
+
Copilot
Write better code with AI
+
Code review
Manage code changes
+
Issues
Plan and track work
+
Discussions
Collaborate outside of code
Explore
+ All features
+ Documentation
+ GitHub Skills
+ Blog
* Solutions
For
+ Enterprise
+ Teams
+ Startups
+ Education
By Solution
+ CI/CD & Automation
+ DevOps
+ DevSecOps
Resources
+ Learning Pathways
+ White papers, Ebooks, Webinars
+ Customer Stories
+ Partners
* Open Source
+
GitHub Sponsors
Fund open source developers
+
The ReadME Project
GitHub community articles
Repositories
+ Topics
+ Trending
+ Collections
* Pricing
Search or jump to...
Search code, repositories, users, issues, pull requests...
Search
[ ]
Clear
Search syntax tips
Provide feedback
We read every piece of feedback, and take your input very seriously.
[ ] [ ] Include my email address so I can be
contacted
Cancel Submit feedback
Saved searches
Use saved searches to filter your results more quickly
Name [ ]
Query [ ]
To see all available qualifiers, see our documentation.
Cancel Create saved search
Sign in
Sign up
You signed in with another tab or window. Reload to refresh your
session. You signed out in another tab or window. Reload to refresh
your session. You switched accounts on another tab or window. Reload
to refresh your session. Dismiss alert
{{ message }}
glebbash / LO Public
* Notifications You must be signed in to change notification
settings
* Fork 2
* Star 301
*
LO - small programming language targeting WASM that aims to be as
simple as possible
License
MIT license
301 stars 2 forks Branches Tags Activity
Star
Notifications You must be signed in to change notification settings
* Code
* Issues 1
* Pull requests 0
* Discussions
* Actions
* Projects 0
* Wiki
* Security
* Insights
Additional navigation options
* Code
* Issues
* Pull requests
* Discussions
* Actions
* Projects
* Wiki
* Security
* Insights
glebbash/LO
This commit does not belong to any branch on this repository, and may
belong to a fork outside of the repository.
main
BranchesTags
Go to file
Code
Folders and files
Name Name Last commit Last commit
message date
Latest commit
History
711 Commits
.devcontainer .devcontainer
.vscode .vscode
docs/assets docs/assets
examples examples
src src
vscode-ext vscode-ext
.editorconfig .editorconfig
.gitignore .gitignore
.gitpod.yml .gitpod.yml
Cargo.toml Cargo.toml
LICENSE LICENSE
README.md README.md
build.sh build.sh
lo.wasm lo.wasm
rust-toolchain.toml rust-toolchain.toml
utils.mjs utils.mjs
View all files
Repository files navigation
* README
* MIT license
[lo]
LO - small programming language targeting WASM that aims to be as
simple as possible
Goals
* Make both the language and the compiler small and easy to
understand
* Have little to no dependencies
* Be easy to use and modify
* Emit WASM to have the biggest target coverage with little code
Development Log
Parts [0..6] - Building the initial compiler. (text based blog)
Parts [7..] - Building the self-hosted compiler. (YouTube playlist)
Overview
Check out example .lo programs including standard library sources and
WIP self-hosted compiler in the ./examples folder.
Here are some of them with syntax highlighting from the LO VS Code
extension:
* Hello world (source):
Hello World sample
* Advent of Code 2020 Day 1 (source):
AOC 2020 sample
* Dark Maze (WASM-4 demo game) play it here or check the source:
Dark Maze gif
Getting started
Option 1 (recommended): Using VS Code extension only
This option also works in vscode.dev
* Install the LO VS Code extension
* To create a new project: Open empty folder, execute Command
Palette: LO: Initialize project in current workspace
* To run currently open file: execute Command Palette: LO: Run
current file, or press >[?] button in the top toolbar
* Compiling files:
+ Open Web Shell: execute Command Palette: Terminal: Create New
Web Shell
+ Run: run lo.wasm .lo >