Skip to content

voidlanguage/void

develop
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Code

Latest commit

 

Git stats

Files

Permalink
Failed to load latest commit information.
Type
Name
Latest commit message
Commit time
 
 
 
 
src
 
 
std
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Void

An experimental WebAssembly language. Designed to make writing high performance web apps fun for individuals and teams alike.

https://justforfunnoreally.dev/

// Find the value of the fibonacci sequence at index n
fn fib(n:i32) -> i32
    if (n < 2)
        n
        fib(n - 1) + fib(n - 2)

// All binary programs have a main function
fn main() -> void
    var index = 0
    for num in range(15)
        // Print fibonacci sequence at index using UFCS.
        num.fib().print()

Disclaimer Void is in it's very early stages and should not be used for production applications. Most MVP features have not been implemented yet. The language does run and compile though. So feel free to play around.

Core values:

  • Developer satisfaction
  • Predictability
  • Balance between performance and simplicity. Zero-Cost abstractions is a non-goal.
  • First class WebAssembly support
  • Play nice with others
  • Fast performance
  • Prefer existing standards when possible
  • Quality libraries for web, server, and graphics applications.

Features:

  • Fn syntax
  • Primitive macro
  • Infix support
  • Standard function notation
  • Parenthetical elision
  • UFCS (dot notation)
  • Variables
  • If statements
  • WASM code generation
  • Function overloading
  • Booleans
  • Tuple and Struct destructuring
  • Tail recursion
  • Generics
  • Modules 🚧
  • Std library 🚧
  • Test framework
  • Type checking
  • Type inference
  • Safety semantics (unsafe, ownership etc)
  • Match statements
  • Loops
  • Algebraic data types
  • Optionals
  • Algebraic effects
  • Reference Types (Boxes? / Mutable Borrows? / GC?)
  • Traits
  • Syntax Objects and Syntax Traits / Interfaces
  • Hygienic Macros
  • String literals 🚧
  • Struct literals 🚧
  • Tuple literals 🚧
  • Array literals 🚧
  • Named arguments
  • Rest parameters
  • WASM module function exports
  • Access control (public / private etc)
  • Comments
  • First class functions
  • Scoping / (Namespacing?)
  • Syntax Highlighting
  • Language Sever Protocol
  • Website
  • Debugger

Getting Started

Install

npm i -g voidc

Usage

voidc path/to/code.void

Documentation

To get a feel of the language, check out the overview.md file.

For an in depth language guide, check out the reference folder.

About

A WebAssembly Language For Full Stack Web Development

Resources

Stars

Watchers

Forks

Packages

No packages published