the only compiled language that lets you code with "sus", "slay", and "vibez" while achieving near-c performance.
1 yeet "vibez"
2
3 slay main_character() {
4 sus i normie = 1
5 bestie i <= 100 {
6 ready i % 15 == 0 {
7 vibez.spill("FizzBuzz")
8 } otherwise ready i % 3 == 0 {
9 vibez.spill("Fizz")
10 } otherwise ready i % 5 == 0 {
11 vibez.spill("Buzz")
12 } otherwise {
13 vibez.spill(i)
14 }
15 i = i + 1
16 }
17 }
500x
faster than python
(which isn't that hard tbh)
50+
standard library modules
(of questionable design)
100%
production ready
(according to Claude Code)
compiled code that absolutely slaps
đŗ binary tree reversal
squad TreeNode { val normie left āļTreeNode right āļTreeNode } slay invert_tree(root āļTreeNode) āļTreeNode { ready (root == nah) { damn nah } root.left, root.right = root.right, root.left invert_tree(root.left) invert_tree(root.right) damn root }
đ¯ two sum (leetcode #1)
yeet "arrayz" slay two_sum(nums []normie, target normie) []normie { sus seen = new_hashmap<normie, normie>() bestie (i, num in nums) { sus complement = target - num ready (seen.has(complement)) { damn [seen.get(complement), i] } seen.set(num, i) } damn [] }
đ reverse linked list (leetcode #206)
squad ListNode { val normie next āļListNode } slay reverse_list(head āļListNode) āļListNode { sus prev āļListNode = nah sus current = head bestie (current != nah) { sus next = current.next current.next = prev prev = current current = next } damn prev }
đ§Š longest substring (leetcode #3)
yeet "stringz" slay longest_substring(s tea) normie { sus char_map = new_hashmap<tea, normie>() sus left normie = 0 sus max_len normie = 0 bestie (right, char in s) { ready (char_map.has(char) && char_map.get(char) >= left) { left = char_map.get(char) + 1 } char_map.set(char, right) max_len = max(max_len, right - left + 1) } damn max_len }
đ§ regular expression (leetcode #10 - hard)
slay is_match(s tea, p tea) lit { sus m = s.len() sus n = p.len() sus dp = make_matrix<lit>(m+1, n+1) dp[0][0] = based bestie (i in 0..n) { ready (p[i] == '*') { dp[0][i+1] = dp[0][i-1] } } bestie (i in 0..m) { bestie (j in 0..n) { ready (p[j] == '*') { dp[i+1][j+1] = dp[i+1][j-1] ready (p[j-1] == s[i] || p[j-1] == '.') { dp[i+1][j+1] ||= dp[i][j+1] } } otherwise { ready (p[j] == s[i] || p[j] == '.') { dp[i+1][j+1] = dp[i][j] } } } } damn dp[m][n] }
đ§ trapping rain water (leetcode #42 - hard)
slay trap(height []normie) normie { ready (height.len() < 3) { damn 0 } sus left = 0 sus right = height.len() - 1 sus left_max = 0 sus right_max = 0 sus water = 0 bestie (left < right) { ready (height[left] < height[right]) { ready (height[left] >= left_max) { left_max = height[left] } otherwise { water += left_max - height[left] } left++ } otherwise { ready (height[right] >= right_max) { right_max = height[right] } otherwise { water += right_max - height[right] } right-- } } damn water }
đĒ min window substring (leetcode #76 - hard)
yeet "stringz" slay min_window(s tea, t tea) tea { sus target_count = new_hashmap<tea, normie>() bestie (char in t) { target_count[char] = target_count.get(char) + 1 } sus required = target_count.size() sus formed = 0 sus window_counts = new_hashmap<tea, normie>() sus left = 0, right = 0 sus min_len = normie.max sus min_left = 0, min_right = 0 bestie (right < s.len()) { sus char = s[right] window_counts[char] = window_counts.get(char) + 1 ready (target_count.has(char) && window_counts[char] == target_count[char]) { formed++ } bestie (left <= right && formed == required) { ready (right - left + 1 < min_len) { min_len = right - left + 1 min_left = left min_right = right } sus char = s[left] window_counts[char]-- ready (target_count.has(char) && window_counts[char] < target_count[char]) { formed-- } left++ } right++ } damn min_len == normie.max ? "" : s[min_left..min_right+1] }
đ sliding window max (leetcode #239 - hard)
yeet "arrayz" slay max_sliding_window(nums []normie, k normie) []normie { sus result = [] sus deque = new_deque<normie>() bestie (i in 0..nums.len()) { bestie (!deque.empty() && deque.front() <= i - k) { deque.pop_front() } bestie (!deque.empty() && nums[deque.back()] <= nums[i]) { deque.pop_back() } deque.push_back(i) ready (i >= k - 1) { result.push(nums[deque.front()]) } } damn result }
frequently asked questions
everything you need to know about cursed
Gen Z programming keywords that replace traditional language constructs:
Control Flow:
ready â if
otherwise â else
bestie â for
periodt â while
vibe_check â switch
mood â case
basic â default
Declaration:
vibe â package
yeet â import
slay â func
sus â var
facts â const
be_like â type
squad â struct
Flow Control:
damn â return
ghosted â break
simp â continue
later â defer
stan â go
flex â range
Values & Types:
based â true
cringe â false
nah â nil
normie â int
tea â string
drip â float
lit â bool
āļT â pointer to type T
Comments:
fr fr â line comment
no cap...on god â block comment
the following prompt was issued into a coding agent:
Hey, can you make me a programming language like Golang but all the lexical keywords are swapped so they're Gen Z slang?
and then the coding agent was left running AFK for months in a bash loop, aka Ralph Wiggum.
1/4th of a San Francisco software engineer's monthly salary
whatever Claude thought was appropriate to add
there is no roadmap. success is defined as cursed ending up in the Stack Overflow developer survey as either the "most loved" or "most hated" programming language and bootstrapping the compiler to be written in cursed itself.
fork the github repo, run claude code and do a couple more agentic loops using this prompt:
study specs/* to learn about the programming language. When authoring the cursed standard library think extra extra hard as the CURSED programming language is not in your training data set and may be invalid. Come up with a plan to implement XYZ as markdown then do it
then send in a pull-request with your most cursed code
get cursed
how to start building cursed code
đĻ download binaries
pre-built binaries for all platforms
đ first program
create a file called fizzbuzz.đ
yeet "vibez" slay main_character() { sus i normie = 1 bestie i <= 100 { ready i % 15 == 0 { vibez.spill("FizzBuzz") } otherwise ready i % 3 == 0 { vibez.spill("Fizz") } otherwise ready i % 5 == 0 { vibez.spill("Buzz") } otherwise { vibez.spill(i) } i = i + 1 } }
then run it with:
cursed --compile fizzbuzz.đ