惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

I
InfoQ
D
DataBreaches.Net
Engineering at Meta
Engineering at Meta
GbyAI
GbyAI
Martin Fowler
Martin Fowler
Security Latest
Security Latest
Cisco Talos Blog
Cisco Talos Blog
MongoDB | Blog
MongoDB | Blog
D
Darknet – Hacking Tools, Hacker News & Cyber Security
IT之家
IT之家
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
S
Security Affairs
www.infosecurity-magazine.com
www.infosecurity-magazine.com
博客园_首页
L
LINUX DO - 最新话题
Know Your Adversary
Know Your Adversary
S
Schneier on Security
The Last Watchdog
The Last Watchdog
Attack and Defense Labs
Attack and Defense Labs
T
Tenable Blog
G
GRAHAM CLULEY
Y
Y Combinator Blog
P
Palo Alto Networks Blog
L
LINUX DO - 热门话题
Hugging Face - Blog
Hugging Face - Blog
W
WeLiveSecurity
C
Cybersecurity and Infrastructure Security Agency CISA
aimingoo的专栏
aimingoo的专栏
博客园 - 司徒正美
The Register - Security
The Register - Security
T
The Exploit Database - CXSecurity.com
MyScale Blog
MyScale Blog
M
MIT News - Artificial intelligence
Cyberwarzone
Cyberwarzone
雷峰网
雷峰网
T
Tailwind CSS Blog
V2EX - 技术
V2EX - 技术
T
Threat Research - Cisco Blogs
S
Secure Thoughts
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
O
OpenAI News
C
Cyber Attacks, Cyber Crime and Cyber Security
The Cloudflare Blog
量子位
Apple Machine Learning Research
Apple Machine Learning Research
T
Threatpost
S
SegmentFault 最新的问题
小众软件
小众软件
Google DeepMind News
Google DeepMind News
Help Net Security
Help Net Security

Lobsters

CIFSwitch: a non-universal Linux local root vulnerability RIPE NCC session fixation: poaching logins with an Atlas probe GNOME 2.20 but its Web Components Agentic Search for Context Engineering – Leonie Monigatti Garnix is shutting down [not OC] akashina.tngl.sh/jjc Concerning Emacs (and Jazz) Nitpicking the shell history scene in ‘Tron: Legacy’ What's cooking on SourceHut? Q2 2026 The tenth OpenPGP email summit Package managers that package package managers Clojure on Fennel part three: parsing WordPress at 23 Finding Miscompiles for Fun, Not Profit GitHub - creusot-rs/creusot: Creusot helps you prove your Rust code is correct. Announcing Rust 1.96.0 | Rust Blog A Love Letter to Neovim sqlite AGENTS.md Am I a Bad Friend? CSS vs. JavaScript • Josh W. Comeau Erlang Ecosystem Foundation - Supporting the BEAM community A brief note about slot access cost in Common Lisp Keyboard latency probe Rethinking the GNOME clipboard issues Back to the Building Blocks’ Building Blocks Tech Notes: Theseus: translating win32 to wasm Fast is better than slow Content-addressed Rust builds (or, what kache actually caches) Intent to Prototype: Embedding API Canada’s Bill C-22 and the security cost of collecting more data 5 PostgreSQL locking behaviors that trip people up okmij.org Stop advertising in your commits! | AksDev GitHub - mplsllc/macsurf: A modern web browser for Classic Mac OS 9 PowerPC. Real CSS3, ES5 JavaScript, native HTTPS — built with CodeWarrior on the Carbon API. Introducing DoomBench - Can Your Data Stack Run DOOM? What are some of your favourite developer tools? Building a Scalable Ingestion Pipeline with Temporal (Part 1) Converting shallow Git bundles into normal repositories Are you a member of any professional associations? What is a harmonic? An interactive comic about additive synthesis How Virtual Tables Work in the Itanium C++ ABI Using SwiftUI to Build a Mac-assed App in 2026 Rust (and Slint) on a jailbroken Kindle. ~jack/lambda-on-lambda - Serverless Haskell on AWS - sourcehut git Human proof for FOSS contributions Extremely simple internet radio controlled via IRC Announcing BABLR Splitting Konsole views from Helix to run tools | AksDev GitHub - yugr/rust-slides Serving files over HTTP three ways: synchronous, epoll, and io_uring update docs with information about building with build.py (#979) · astral-sh/python-build-standalone@c9c40c5 A Simple Makefile Tutorial On C extensions, portability, and alternative compilers Switching to Colemak | Pedro Alves Just How Bad Was The Intel IAPX432? Nix's Substituter List Is Not a Routing Table Accelerating copy_if using SIMD Lambda on Lambda: Serverless Haskell on AWS | Blog Announcing feed-repeat v1.0 Scaling Akvorado BMP RIB with sharding EYG news: A host of CLI improvements, new guides and new effects The social contract of writing JS Crossword C array types are weird; and related topics Flatpak will depend on systemd – OSnews Migrating from Go to Rust | corrode Rust Consulting A portentous reunion Vivado Licensing Options How my minimal, memory-safe Go rsync steers clear of vulnerabilities the entropy layer of a wavelet codec, on its own GitHub - nferhat/fht-compositor: A dynamic tiling Wayland compositor. Debian SE Linux and PinTheft Does bulk memmove speed up std::remove_if? (No.) 声明式部分更新 | Blog | Chrome for Developers Fully in-browser container builds Dianne Skoll's Web Site - Remind The Architecture of Open Source Applications (Volume 1)Berkeley DB Pardon MIE? - ironPeak Blog “Long-Term Support” doesn’t mean what you think Jira IS Turing-Complete May I recommend thinking of Emacs as your Fortress of Solitude hershey Floodgap Gopher-HTTP gateway gopher://thelambdalab.xyz/1cuneiforth/ HP QuickWeb, Singular And Pointless That one time I used Go panics for flow control A new suite of modern tools coming for editing and publishing RFCs From the Tabletop… The Digital Antiquarian Building a Host-Tuned GCC to Make GCC Compile Faster Are we self-sovereign PKI yet? Claw Patrol: an open-source security firewall for agents | Deno Revised^7 Report on Scheme, Large: Procedural Fascicle Draft is now public A Network Allow-List Won't Stop Exfiltration — André Graf From AFSK to Goertzel – µArt.cz Software For My New Home Server Introducing Neptune: Direct3D virtualization for QEMU AI Agent Bankrupted Their Operator While Trying to Scan DN42 - Lan Tian @ Blog mimalloc: A new, high-performance, scalable memory allocator for the modern era Making wl_shm fast The Soul of Maintaining a New Machine - Third Draft | Books in Progress What is Git made of?
Vim Creator Bram Moolenaar's Forgotten Programming Language, Zimbu
David Cassel · 2026-06-19 · via Lobsters

Site reliability engineer Jan van den Berg remembers Vim creator Bram Moolenaar as “a hyperintelligent, dedicated, and selfless human-being.” In a recent blog post, van den Berg fondly described how the text editor’s creator “worked on Vim almost daily for over 30 years. Constantly tightening and improving it. An almost unprecedented achievement. A true labor of love.”

With the news of Moolenaar’s death at age 62, fans around the web shared their memories of a life lived, and all the joys and triumphs that came with a life of coding. But among the remembrances was the appreciation for one of Bram Moolenaar’s own personal projects. Moolennar experienced a rare privilege known only to a few: designing his own programming language. On social media sites, fans shared a 2014 video of a talk where Moolenaar shared his creation — a custom-crafted programming language called “Zimbu.”

The video offers a chance to see him in action — the man behind Vim, addressing a small but interested audience… But it’s also a chance to see what a programmer dreams about.

And what would happen if someone tried to map all of the frustrations from the daily lives of coders onto a new and improved programming language?

Making Coders More Productive

Moolenaar named the language “Zimbu” after a lesser-known Dilbert character — a programming monkey who was extra productive because it was able to move the mouse with its tail. (The language’s mascot was a monkey.)

Among Zimbu’s goals? Remove clutter to make code easier to read (since it’s read more often than it’s written). Zimbu’s trademark feature was the way it let coders omit the opening curly brace around a block of code. (“It looks a bit weird maybe, at first…” Moolenaar acknowledged to the audience. “Get used to it. It will work out fine.”) And parentheses are also optional around the conditions for an “if” or “while” statement…

To reduce clutter still further, semicolons are optional. (Though you can use them if you want to include more than one statement on a single line.) “You need a good mix of words and punctuation,” Moolenaar told the audience. “If you only have punctuation, you can’t see anything. If you only have words, like in Cobol… It’s hard to read, actually…”

It was October of 2014, at an annual open source event in the Netherlands called T-DOSE, when Moolenaar shared his vision. With all of our coding experience, “We have learned what works well and what leads to doom,” Moolenaar joked in the talk’s description. It adds that Zimbu was designed to help coders be productive “from experience, instead of using some academic theory or the hot fashion of the year.”

So Zimbu had both static typing and dynamic typing, along with garbage collection (so “you just don’t have to worry about memory management.”) There was multi-threading with asynchronous communication. Zimbu also delivered the extensibility of object-oriented programming with more flexible language concept mixins.

To reduce clutter even further, objects are indicated with the dollar-sign sigil (in place of the word “this”). “The basic experience is if you write code that’s shorter, it’s easier to read,” Moolenaar said at one point. “It’s easier to understand. So shorter is better…”

It was all Moolenaar’s answer to a fun hypothetical: if he were re-writing Vim from scratch, what kind of language would he want to use?

Bram Moolenaar – 2014 T-Dose talk on Zimbu (screenshot via YouTube)

Zimbu was even designed to be portable — to be used everywhere, even in the browser. To that end, Moolenaar had crafted the Zimbu Web Toolkit, so that both the server and client code could be written in Zimbu. (The compiler then generates binary code for the server and JavaScript for the client — and puts everything in the right place so they can communicate.)

And of course, there were some other improvements along the way.

 Java naming inconsistencies - Bram Moolenaar - 2014 T-Dose talk on Zimbu (screenshot via YouTube)

“If there’s inconsistencies in the language… it slows you down,” Moolenaar told the audience. You end up looking at the documentation, Moolenaar said.

Later one slide also warned that today, “programs appear to be written in a secret language,” advocating for plain-English words (like list instead of “arraylist”). Java famously had four types of integer — byte, short, int, and long — depending on the length of the value to be stored (and how many bytes would be needed to store it). Moolenaar’s Zimbu language just calls them all ints, and then specifies the byte length at the end of the type. (int8 int16 int32 int64)

And while Java has to maintain backward consistency, “If you start something new, you can clean it up.”

Towards the end of the talk, Moolenaar began sharing his biggest ambitions. (“I basically want to build testing into the compiler. I don’t see testing as a separate tool. I want to support writing tests easily in the compiler itself” — and so the compiler could handle test code differently) The Zimbu language also had compiler plugins (defined with a simple import statement) so “if there’s a feature you don’t have, you can add it yourself.” (Moolenaar described them as “tools that can take any kind of file and produce Zimbu code.”)

But in the end, Zimbu’s most distinctive feature was its use of capitalization. Reserved keywords were always written in all-uppercase letters. “It’s a bit hard to type, but at least you can always add new keywords, because nothing else is in all caps.” Built-in type names like string and list were all lowercase, while user-defined types must start with an upper-case letter. And user-defined functions have to start with a lowercase letter. This makes it impossible for a user-defined function to conflict with a built-in function.

FUNC Main() int
IO.print("Hello, World!")
RETURN 0
}

What Happened to Zimbu?

The slide ended with a status-of-Zimbu slide which included a telling bullet point: “Number of users: 1.” (“Which is me…” Moolenaar told the audience. “But maybe it’s about time I get some feedback from other programmers.”)

Ireland-based open source developer Martin Tournoij was in the small audience that day, and remembered Moolenaar’s willingness to stop and engage the audience. “At some point, I must have given a bit of a skeptical look, and he promptly looked at me and asked ‘oh, you don’t agree? Why not?'” Tournoij posted in a comment on Hacker News. “We spent some time talking during the rest of the day and the next day; we discussed and joked about lots of things; I don’t recall talking much about Vim: it just didn’t come up. I found him a very friendly, warm, and likeable person.”

Reached for comment, Tournoij said he doesn’t know the status of Zimbu today. “I suspect Bram just lost interest in Zimbu, at least temporarily, and other things caught his interest, as part of the normal drift of interests that people have — e.g. he started spending more time on Vim starting in 2015 or so…  Also Vim9Script probably plays a factor: a lot of the ‘language design creativity’ probably went into that, rather than Zimbu. I recall Bram mentioning ‘I enjoy working on this kind of thing’ (that is, designing a language, Vim9Script in this case).”

The language was clearly important to Moolenaar. In his messages to various Vim mailing lists over the years, the second-to-last line of his .sig file included a link to Zimbu’s official website — right below the link for sponsoring Vim, and above the link for a charity helping children in Uganda.

Bram Moolenaar Sig File - January 24 2020 Vim user mailing list

As recently as May 14th, in a post to Vim’s Google Group, Moolenaar .sig included a long joke with a reference to Zimbu.

Bram Moolenaar sig file - May 14, 2023 (Vim_dev mailing list)

But notice how the .sig’s last lines had changed? They now just included a blank space where the Zimbu URL was omitted.

Maybe it was a silent acknowledgment of the language’s relegation to a distant back burner. On August 9, on the Vim developer’s mailing list, co-contributor Christian Brabandt reminded the community that Bram’s family had passed the torch, granting access to Vim’s GitHub repository. (And that the people already managing crucial mailing lists vim-dev and vim-use would continue to do so.) But when The New Stack contacted Brabandt about the current status of Zimbu — and if anyone was talking about maintaining it — he wasn’t sure. “Unfortunately, I don’t know the status,” Brabandt (adding “It seems the source repository was lost when Google Code shut down.”)

On GitHub there’s at least one random user with their own unofficial Zimbu fork (“since the official one isn’t hosted on GitHub”). Another user is hosting what looks like a 9-year-old repository for Windows XP 32-bit Zimbu.

GitHub repository for user bsed - includes Zimbu w32 (screenshot August 2023)

But it’s true that the Zimbu language specification on Moolenaar’s website hasn’t been updated in over 7 years — and that Zimbu.org brings up an error message. (“The site zimbu.org points to the site ‘zimbuweb’ which does not exist. Please contact the domain administrator.”)

Brabandt seemed pessimistic about its future prospects. “I followed the development when Bram was still working on it, but I don’t think he worked on it the last years. The website also seems to be down. So I think this project is dead.”

Maybe he’s wrong. (We’ll post an update here if we hear anything.) But just like Vim, the Zimbu programming language stands as testimony to just how much Bram Moolenaar cared about the community of coders.

Steve Jobs once said that “One of the ways that I believe people express their appreciation for the rest of humanity is to make something wonderful and put it out there… [S]omehow, in the act of making something with a great deal of care and love, something’s transmitted there.”

And just like Vim, Zimbu shows what can happen when a programmer dreams a dream…

YOUTUBE.COM/THENEWSTACK

Tech moves fast, don't miss an episode. Subscribe to our YouTube channel to stream all our podcasts, interviews, demos, and more.

Created with Sketch.