TLDR: I’ve been making an experimental language: weir. Why? I wanted a fast, typed, functional, cross-platform shell scripting language.
What is weir? ¶
Weir is an interpreted, statically-typed functional language with syntax heavily inspired by F# but with the ergonomics of a shell language (see it in the showcase). Its main goal is scripting, but it also has a decent interactive mode. Weir is shipped as a single native binary (no runtime to install; on Linux it only needs glibc). It is available on all major platforms. The binary houses the runtime, the checker, the interactive REPL, the canonical formatter, and the LSP server. Additionally, there are integrations available for a few editors. Try it out.
The long story ¶
Making a new programming language has always been titanic work. Let alone doing that on your own. I’ve been on the lookout for an ultimate scripting language (for devops & daily tasks) - functional, statically-typed, with good ergonomics around orchestrating processes, with a sensible set of builtins. A language that fails fast, possibly before it even runs. A language that makes it easy to grow a small script into a quality tool. A language that is fun to think in and to write, and that you’d rather code in yourself than let an LLM generate the code for you. That would be a great language to have.
I’ve tried many before (Perl, Python, PowerShell, bash, F# scripts, and Nushell). I particularly liked F# (once I managed to make my mind think functionally). Many have tried using F# scripts before (particularly in build scripting), and so have I. The biggest issue with F# scripts is compilation. The cold startup times are often unacceptable. There were a few third-party efforts to introduce caching layers, but these came with problems of their own. And while they solve the cold start in CI, they still don’t help in day-to-day scripting. And this is all fine, F# originates from the data science/exploration area after all. Wrong tool for the job. However, I still liked the ergonomics of the language. There were a few attempts to make an F# shell, but they’d usually be incomplete, and without the support of Microsoft (which already had PowerShell), prone to fail.
Yet another issue with F# is that it is a huge, multi-paradigm language with many ways to express ideas; powerful, but bloated in a way. Flexible, but the cost of that is a loss of simplicity. Plus, many recent additions to the language focus on interoperability with C# (e.g. nullables and Tasks - F# has had counterparts, options and async respectively, for a long time already).
Last autumn I had a chat with an LLM about an “F# shell”. Our common conclusion was that it was a lost cause. But in June 2026 Anthropic’s Fable LLM showed up. It was then pulled out of Europe by the US authorities. When that happened I regretted I hadn’t tried anything more ambitious with it. It was again allowed in the EU shortly after, and this time I checked my impossible projects list.
This is how weir was born. The models have changed the economics of such experiments. In the past, making a language that likely nobody was going to use was a massive waste of time. But with LLMs it has been 3 months of part-time effort to build something usable. So yeah, truth be told, I didn’t write much code, but I did do the thinking, and made most of the decisions about the DX/ergonomics. Was I the right person for the job? Probably not, but most qualified people wouldn’t think it’s worth doing. So here we are.