All Projects β†’ pannous β†’ wasp

pannous / wasp

Licence: other
🐝 Wasp : Wasm programming (language)

Programming Languages

C++
36643 projects - #6 most used programming language
c
50402 projects - #5 most used programming language
shell
77523 projects
CMake
9771 projects
Makefile
30231 projects
javascript
184084 projects - #8 most used programming language

Projects that are alternatives of or similar to wasp

Wasm Micro Runtime
WebAssembly Micro Runtime (WAMR)
Stars: ✭ 2,440 (+2523.66%)
Mutual labels:  wasm, aot
watpl
Create WebAssembly modules using template strings
Stars: ✭ 14 (-84.95%)
Mutual labels:  wasm
NatsuLang
No description or website provided.
Stars: ✭ 96 (+3.23%)
Mutual labels:  aot
python-wasm
Build scripts and configuration for building CPython for Emscripten
Stars: ✭ 606 (+551.61%)
Mutual labels:  wasm
angular2-aot-webpack
Angular AOT (Ahead Of Time) offline compilation example with Webpack
Stars: ✭ 317 (+240.86%)
Mutual labels:  aot
glicol
(Audio) graph-oriented live coding language and music DSP library written in Rust
Stars: ✭ 853 (+817.2%)
Mutual labels:  wasm
Tfjs
A WebGL accelerated JavaScript library for training and deploying ML models.
Stars: ✭ 15,834 (+16925.81%)
Mutual labels:  wasm
ng-seed
Simple Angular seed project with commonly used features.
Stars: ✭ 12 (-87.1%)
Mutual labels:  aot
emscripten-webxr
WebXR library for use with Emscripten.
Stars: ✭ 21 (-77.42%)
Mutual labels:  wasm
WinFormsComInterop
ComWrappers required to run NativeAOT and WinForms
Stars: ✭ 54 (-41.94%)
Mutual labels:  aot
transonic
πŸš€ Make your Python code fly at transonic speeds!
Stars: ✭ 93 (+0%)
Mutual labels:  aot
aot
Russian morphology for Java
Stars: ✭ 41 (-55.91%)
Mutual labels:  aot
vgg runtime
VGG Runtime for loading and running designs as apps.
Stars: ✭ 19 (-79.57%)
Mutual labels:  wasm
vox
Vox language compiler. AOT / JIT / Linker. Zero dependencies
Stars: ✭ 288 (+209.68%)
Mutual labels:  aot
go-wasm-pdfcpu
Running a Command line tool written in Go on browser with WebAssembly
Stars: ✭ 79 (-15.05%)
Mutual labels:  wasm
Yew
Yew is a modern Rust framework for creating multi-threaded front-end web apps with WebAssembly.
Stars: ✭ 18,243 (+19516.13%)
Mutual labels:  wasm
angular2-pokedex
A Pokedex built on Angular with AoT, Tree Shaking, Rollup and TypeScript
Stars: ✭ 34 (-63.44%)
Mutual labels:  aot
hash-wasm
Lightning fast hash functions using hand-tuned WebAssembly binaries
Stars: ✭ 382 (+310.75%)
Mutual labels:  wasm
parametric surfaces
Parametric surfaces drawn using the Rust + WASM toolchain with WebGL, React, and TypeScript.
Stars: ✭ 43 (-53.76%)
Mutual labels:  wasm
wsPlayer
wsPlayer is a web video player based on WebSocket-fmp4.
Stars: ✭ 88 (-5.38%)
Mutual labels:  wasm

🐝 Wasp : Wasm Programming Language

Wasp is a new unified notation for both markup/object data and code.
Wasp is the foundation layer of the higher order programming language angle.

Β«Data is Code and Code is DataΒ»

Wasp Syntax

For example, a HTML registration form:

<form>
  <!--comment-->
  <div class="form-group">
    <label for="email">Email address:</label>
    <input type="email" id="email">
  </div>
  <button class='btn btn-info'>Submit</button>
</form>

Can be represented in Wasp as:

form{                                 
  //comment                          
  div{ class:"form-group"             
    label{ for:email                  
      "Email address:"                
    }
    input{ type:email id:email}     
  }
  button{ class:['btn' 'btn-info']  
    'Submit'                        
  }
}

The wasp runtime is available as

  • native binary for Mac, Linux and Windows
  • small standalone webassembly file (~50kb), with or without
  • a wasm compiler (~100kb) in wasm:

Angle Language

Angle is a new Programming Language using Wasp as data format,
"Lisp with Hashes" and optional braces.

Hello World in Angle is
"Hello World"

The deep formal reason why this is a valid program is that the last object in a block is its return value
and the last result in the root block of the main file is printed.

Fibonacci in Angle is

fibonacci number = if number<2 : 1 else fibonacci(number - 1) + fibonacci it - 2

Note how number simulataneously acts as type and variable name.
Note how the unique argument number can be accessed via it keyword and some brackets are optional

Auto typed fibonacci in Angle is

fib := if it<2 : 1 else fib(it-1) + fib it - 2

Angle runs as wasm file inside browsers an as small lambdas in edge computing. Angle programms compiled to wasm, which dont make use of the standard api can be extremely small <1kb, just like handwritten wast but with much more comfort.

Wasp and Angle are free of dependencies (other than gcc, if the (wasm) runtime is to be compiled from scratch). Only some optional features can make use of external dependencies:

The natives runtimes can be configured to ship with a JIT wasm runtime (wasm3, wasmer, wasm-micro-runtime)

The native Wasp/Angle binary contains a small WebView connector making use of the host's browser component (Edge or WebKit). Since the Angle language can be compiled from wasm to wasm, this gives a whole self sufficient programming environment in less than 200kb,
with similar power to electron and QT.

Until a smart way is found to write directly to the WebViews canvas, angle ships with a low overhead graphics adapter (using SDL) for fast fullscreen painting.

Documentation

Wasp Data Model

Wasp, is a new unified notation for both object and markup data. The notation is a superset of what can be represented by JSON, HTML and XML, but overcomes many limitations these popular data formats, yet still having a very clean syntax and simple data model.

  • It has clean syntax with fully-type data model (like JSON or even better)
  • It is generic and extensible (like XML or even better)
  • It has built-in mixed content support (like HTML5 or even better)
  • It supports high-order composition (like S-expression or even better)
Wasp/Mark JSON HTML XML S-expr YAML
Clean syntax yes yes no yes yes yes
Fully-typed yes yes no no yes yes
Generic yes yes no yes yes yes
Mixed content support yes hard yes yes hard hard
High-order composition yes possible no yes yes possible
Wide adoption not yet yes yes yes limited limited

Wasp has a simple and fully-typed data model.

Documentation

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].