It's a small language that looks familiar if you know other imperative Algol-derived languages. The point is not in that, the point is a single binary for everything, and portability.
It's like busybox, which is unremarkable as Unix userland, but is interesting because it's a single small binary.
But beyond the standard Algolish stuff, XS seems to have quite a few modern niceties, such as traits, generics, closures, OOP, pattern-matching, and even algebraic effects.
Assuming that's the primary value prop, they should go all the way and distribute it as a single cross-OS/arch fat binary. It looks like this may be a way to actually accomplish that: https://github.com/jart/cosmopolitan.
Yeah, that's my concern too. I might be interested in checking out an AI-developed language, if I knew who was working on it, could research them as a person (are they an undergrad pre-career or retired post-career?), see previous projects of theirs, or even contact them. But I have no interest in some anonymous project that has no provenance and no chance of longevity.
Not 'large Perl codebases', but I know an awful lot of 'small Perl codebases', relatively speaking, doing the sort of sysadmin stuff Perl was designed to do. It's still a great scripting language, and there's a lot of folks who didn't get the memo that cool kids don't use Perl any more.
Interesting idea. I've fantasized about doing something similar myself. Like someone else in this thread already said though, looks very generated, unfortunately.
This language, README, website has been written by AI agents.
At one point, the author may have written a fair bit of code by hand (starting with a Crafting Interpreters project, and then adapting it recently using agents?). The commit history is very confusing.
The design of the VM is nearly identical to the clox interpreter in Crafting Interpreters. There's also a bit of Lua inspiration mixed in the instruction encoding.
Who is this language for? Who is the audience, and what does the author intend to convey to them?
There's a ton of features -- are they used consistently? We have function overloading and traits. We have optional type annotations and effects -- the effects are handled with a (fragile) multi-shot continuation implementation (at least copy Leijen or libmprompt! that code is out there, free to use, and robust!)
There are two parallel type inference systems in `src/types`. The type system which the language actually uses is not consistent yet (see e.g. `inference.c`: "recursive type: bind anyways")
With that being said, I'd take the cross platform claims with an extreme grain of salt ...
The polymorphism looks a little half-missing as well (checker.c):
/* generalize: check if vars in t are free (not bound in env).
For now, a simplified version that just returns the type as-is. */
CkType *ck_generalize(CkTypeEnv *env, CkType *t) {
So the identity func (id x = x) stays a monotype?
Also, I'm not seeing any more or less safety in this code than the surrounding code:
Are multiple type-checking threads blasting through this at the same time?
The most interesting claim that this file makes is that it does HM-inference as well as subtyping. I'm smart enough to parrot "that's undecidable" even if I'm too dumb to know why.
HM is hard enough without taking the sizeof pointers and mallocing every few lines.
Initially, the page looked very intriguing and the promises looked every fascinating. A whole DX toolchain in one binary? The binary can run in different systems? Only 3 MB? Then I read the comments here saying its ai slop, I lost all my interest now.
Traditionally if a human spent some of their limited time here on Earth to create something, they must have believe there was some value in it, and other humans will be inclined to spend a bit of their limited time here on Earth to take a look and see if they value it as well. Sometimes, the only person who values it is the creator, but often other people will value it as well.
I can only speak for myself, but I'm not going to use the precious time I have alive wading through the mountains of schlock that LLMs can spew out looking for anything of value. I'm interested in things a human wanted to spend their finite time doing instead of something else.
There are a lot of words related to language design like tree walk interpreter, algebraic effects, and semantic analyzer. But no real content about the language design, motivation, or what distinguishes it from other languages.
Also strange to start of the language introduction with an entire page dedicated to comments and how white space is handled.
If this was written by a human, I how it is taken as constructive criticism to consider what key points you want to convey before people bounce off of a page.
Every other piece of
* the old tier-1 dispatch JIT (the ~1500 lines of per-opcode helpers,
* the jump-table dispatcher, the jit_rt_* runtime shims) was deleted
* because benchmarks showed tier-2 dominated on every workload that
* reached the JIT at all. */
No human cares about including such an irrelevant detail as the lines of code in helper functions. Obvious LLM context spew, obvious AI slop project. Please stop posting things you didn't bother actually working on.
I don't buy "Anywhere, anytime, by anyone" - no language can be that. Different people and different projects have wildly different needs. It looks like it tries to provide a single binary offering most of the compiler, debugger, linter, etc. on "all" platforms. Noble goal in itself, useful for some cases, but utterly irrelevant for many (most?) projects. If I have already decided to work on Linus, I don't care about Windows compatibility. And why "by anyone"? If a language is optimized for school kids, it can not be optimal for serious professionals, and vice versa.
skybrian | 11 hours ago
On the website, the standard library lacks a table of contents, but you can see what it has here:
https://github.com/xs-lang0/xslang.org/tree/main/src/app/doc...
nine_k | 10 hours ago
It's like busybox, which is unremarkable as Unix userland, but is interesting because it's a single small binary.
But beyond the standard Algolish stuff, XS seems to have quite a few modern niceties, such as traits, generics, closures, OOP, pattern-matching, and even algebraic effects.
buu700 | 8 hours ago
__erik | 11 hours ago
mpalmer | 11 hours ago
At this point, it doesn't really matter what the language does, because the author and I have mutual respect. There is none.
saulpw | 7 hours ago
stefanos82 | 10 hours ago
Here's an example https://github.com/adriaandens/XSamples/blob/master/XSamples...
[1] https://perldoc.perl.org/perlxs
nine_k | 10 hours ago
giancarlostoro | 10 hours ago
kmoser | 8 hours ago
kjs3 | 9 hours ago
indigodaddy | 8 hours ago
darrenf | 8 hours ago
thrance | 3 hours ago
chrsw | 10 hours ago
mccoyb | 10 hours ago
At one point, the author may have written a fair bit of code by hand (starting with a Crafting Interpreters project, and then adapting it recently using agents?). The commit history is very confusing.
The design of the VM is nearly identical to the clox interpreter in Crafting Interpreters. There's also a bit of Lua inspiration mixed in the instruction encoding.
Who is this language for? Who is the audience, and what does the author intend to convey to them?
There's a ton of features -- are they used consistently? We have function overloading and traits. We have optional type annotations and effects -- the effects are handled with a (fragile) multi-shot continuation implementation (at least copy Leijen or libmprompt! that code is out there, free to use, and robust!)
There are two parallel type inference systems in `src/types`. The type system which the language actually uses is not consistent yet (see e.g. `inference.c`: "recursive type: bind anyways")
With that being said, I'd take the cross platform claims with an extreme grain of salt ...
timcobb | 10 hours ago
Oooof brutal. I agree it is remarkable people release stuff like this.
mccoyb | 10 hours ago
Very impressive if I'm wrong (hopefully some of the comments help you prune some of these smells, if you wish)
kmoser | 8 hours ago
Given that it's written in C (and assuming it actually compiles), I'm likely to believe the cross-platform claim.
tgv | 8 hours ago
mrkeen | 7 hours ago
Also, I'm not seeing any more or less safety in this code than the surrounding code:
Are multiple type-checking threads blasting through this at the same time?The most interesting claim that this file makes is that it does HM-inference as well as subtyping. I'm smart enough to parrot "that's undecidable" even if I'm too dumb to know why.
HM is hard enough without taking the sizeof pointers and mallocing every few lines.
potsandpans | 6 hours ago
Alifatisk | 10 hours ago
feelamee | 9 hours ago
nkrisc | 9 hours ago
I can only speak for myself, but I'm not going to use the precious time I have alive wading through the mountains of schlock that LLMs can spew out looking for anything of value. I'm interested in things a human wanted to spend their finite time doing instead of something else.
Alifatisk | 8 hours ago
feelamee | 8 hours ago
Then, what if ai will write something cool/good/interesting/high quality/amazing?
mrloba | 8 hours ago
Human effort signals value, AI does not.
Human effort is often inviting collaboration. AI rarely does.
IshKebab | 6 hours ago
MeetingsBrowser | 9 hours ago
There are a lot of words related to language design like tree walk interpreter, algebraic effects, and semantic analyzer. But no real content about the language design, motivation, or what distinguishes it from other languages.
Also strange to start of the language introduction with an entire page dedicated to comments and how white space is handled.
If this was written by a human, I how it is taken as constructive criticism to consider what key points you want to convey before people bounce off of a page.
CharlesW | 9 hours ago
atemerev | 9 hours ago
Too bad that agentic world basically destroyed all programming languages that are not Python, Typescript or Rust.
brabel | 7 hours ago
cozzyd | 5 hours ago
soulofmischief | 8 hours ago
Tells me all I need to know. Signalling my intent to call this garbage.
hunterpayne | 7 hours ago
trashburger | 7 hours ago
heikkilevanto | 6 hours ago