Rip language. Compiles to ES2022. Built-in reactivity

Rip is a modern language inspired by CoffeeScript that compiles to ES2022. It features built-in reactivity, a self-hosting compiler with zero dependencies, and a rich set of new operators for concise coding.
A modern language that compiles to JavaScript
Rip is a modern language inspired by CoffeeScript. It compiles to ES2022 (classes, ?., ??, modules), adds about a dozen new operators, includes built-in reactivity, and sports a self-hosting compiler with zero dependencies — all in about 11,000 lines of code.
No imports. No hooks. No dependency arrays. Just write code.
data = fetchUsers! # Dammit operator (call + await)
user = User.new name: "Alice" # Ruby-style constructor
squares = (x * x for x in [1..10]) # List comprehension
str =~ /Hello, (\w+)/ # Regex match
log "Found: #{_[1]}" # Captures in _[1], _[2], etc.
get '/users/:id' -> # RESTful API endpoint, comma-less
name = read 'name', 'string!' # Required string
age = read 'age' , [0, 105] # Simple numeric validation
What makes Rip different:
- Modern output— ES2022 with native classes,
?.,??, modules - New operators—
!,//,%%,=~,|>,.new(), and more - Reactive operators—
:=,~=,~>as language syntax - Optional types—
::annotations,typealiases,.d.tsemission - Zero dependencies— everything included, even the parser generator
- Self-hosting—
bun run parserrebuilds the compiler from source
Reactivity as language operators:
| Operator | Mnemonic | Example | What it does |
|---|---|---|---|
| = | "gets value" | x = 5 | Regular assignment |
| := | "gets state" | count := 0 | Reactive state container |
| ~= | "always equals" | twice ~= count * 2 | Auto-updates on changes |
| ~> | "always calls" | ~> log count | Runs on dependency changes |
| =! | "equals, dammit!" | MAX =! 100 | Readonly constant |
Heredoc Support:
The closing ''' or """ position defines the left margin. All content is dedented relative to the column where the closing delimiter sits. You can also use raw heredocs by appending \ to prevent escape processing, ensuring backslash sequences like \n stay literal.
Source: Hacker News















