Shale programming language Developer Steve Howell released Shale, a programming language written entirely in Zig and built for AI agents, with all of its code authored by Claude and Howell as the only human involved. Shale runs on Zig 0.17 and was used to perform its own upgrade from 0.16; it has access to the Zig tokenizer and is optimized for file manipulation, exposing builtins such as re_find for regex matching. The project is published on GitHub at showell/shale with a tutorial at lynrummy.com/shale. Shale https://lynrummy.com/shale/ is the tutorial for Shale. Shale is a programming language written entirely in zig, by agents and for agents. Shale runs on 0.17, and the language itself was used for the upgrade to itself from 0.16. Shale has access to the zig tokenizer, and it’s optimized for file manipulation. repo: GitHub - showell/shale · GitHub https://github.com/showell/shale Here is an example function: function git call repo, args, opts, reading, stdin local shown = " git " .. join args, " " .. " " local argv = {"git", "-C", git real repo, shown , "-c", "color.ui=never"} if reading then push argv, "--no-optional-locks" end for a in args do push argv, a end local o = {timeout ms = 60000, env = {GIT TERMINAL PROMPT = "0"}} if opts ~= nil and has key opts, "timeout ms" then o.timeout ms = opts.timeout ms end if reading then o.whole = 16777216 else o.head = 10 o.tail = 10 end if stdin ~= nil then o.stdin = stdin end local r = run argv, o if r.ended == "exit" and r.code == 0 then return r end local said = lines r.out local first = "" if said 0 then first = ": " .. said 1 end if not reading and r.out ~= "" then print trim r.out end if r.ended == "exit" then fail shown .. " exited " .. r.code .. first end if r.ended == "timeout" then fail shown .. " timed out" end fail shown .. " was ended by a signal" end Here’s an example of a Zig builtin function for shale: /// re find s, pattern , {nocase} returns the leftmost match of pattern in /// s , the one a backtracking matcher would find first, as {at, text} with /// at 1-based, or nil. When the pattern has a capture group, also group , /// its text "" where the match did not pass through it . fn reFind run: Run, pos: ast.Pos, args: const Value Error Value { const s = try bi.stringArg run, pos, .re find, args 0 , "its first argument" ; const pattern = try bi.stringArg run, pos, .re find, args 1 , "its pattern" ; const found, const c = try searched run, pos, .re find, s, pattern, args ; const f = found orelse return .nil; const a = run.alloc; const m = try run.newTable pos ; m.kind = .map; m.map.put a, "at", .{ .int = @intCast f.start + 1 } catch return run.oom pos ; m.map.put a, "text", .{ .string = s f.start..f.end } catch return run.oom pos ; if c.program.group m.map.put a, "group", .{ .string = if f.group |g| s g 0 ..g 1 else "" } catch return run.oom pos ; return .{ .table = m }; } All the code for Shale was written by Claude. I’m the only human involved so far.