Rendered at 16:56:26 GMT+0000 (Coordinated Universal Time) with Cloudflare Workers.
HeavyStorm 8 days ago [-]
Oh god why:
> String methods cover case conversion, trimming, searching, splitting, replacing, padding, classification, and parsing. .len() counts Unicode codepoints, not bytes; use .bytes().len() for raw byte length. Indexing with s[i] works in bytes; negative indices count from the end and out-of-bounds returns null. Several methods have aliases: .find() / .index_of(), .ltrim() / .trim_start(), etc.
Indexing uses bytes and len uses codepoints? Are you mad?
weirdUnicode[weirdUnicode.len()-1] returns random char?
And a = "a"; a[1] is null??
000ooo000 8 days ago [-]
Wow this is packed with features and looks great. Usually I skim through the docs for new langs waiting to see the design decision that makes me think "whyyyyy", but I think the most jarring thing for me here was really only the {- -} block comments. #, // and /*/ are ubiquitous and (IMHO) very unoffensive. @OP, any particular reason you opted for {- -}? No hate, just curious
xslang.org also looks great and I found the text in the guide + docs to be easy to read. I usually have to read C#/TS docs, so it was refreshingly terse.
mapcars 8 days ago [-]
Are there any new features/improvements compared to established languages? For me its interesting to see how new languages explore new ideas, which don't exist in the mainstream yet.
HeavyStorm 8 days ago [-]
Looks really cool. My main advice is: you must tell us why choose xs. It's cool but I saw no killer feature that would push me from go or python to it.
What does it do differently? What problem it solves that other languages don't?
Also, performance numbers. This looks highly complex and I worry that your C backend would underperform similar code in other languages. So let's us know.
spacedcowboy 8 days ago [-]
S'funny - I just used Claude to help me make a more-modern language[1] for the Atari 8-bit than the assembly/Action!/C that I've been using up until now
On the homepage, you have to change:
`git clone github.com/xs-lang0/xs && cd xs && make`
to:
`git clone https://github.com/xs-lang0/xs && cd xs && make`
dnnddidiej 10 days ago [-]
Very cool. Since you have memoize ... does that mean all values are immutable?
Like the built in decorators. I think language design based on what people want to achieve rather than creating the most generic zoo of primitives is underexplored. So this is good.
tacostakohashi 10 days ago [-]
Language design based on what people want to achieve: that's basically what php, perl, python, visual basic... many others are/were.
It works pretty well!
Then... what people want to achieve changes, maybe they want to write a web app instead of desktop, and then you're screwed. Perl was excellent when everything was text... but when things started being XML or JSON or whatever, less so.
It's a fair point though, languages built around practicality have their place.
Panzerschrek 10 days ago [-]
Does it have destructors?
Is is memory-safe?
sheept 8 days ago [-]
Just a quick search through the docs, it's garbage collected and has no means of directly manipulating memory, so it seems to be memory safe
nullpwr 8 days ago [-]
[dead]
arendtio 8 days ago [-]
So how does it compare to
- JS
- Go
- Java
- Python
I think adding a page about that in the docs could help evaluate the language.
banner521520 10 days ago [-]
Does your playground support astrocarto-style coordinate mapping? Would be cool for location-based data.
citbl 8 days ago [-]
Impressive work. There is a ton of work done in there.
You can improve it by giving a reason for people to want to adopt it. That is bring novel ideas and push the envelope.
As is, it's a very impressive homework.
How's FFI with it? Can we just link any C lib?
eps 8 days ago [-]
Well, great.
How does it compare to others?
Is it C with bells and whistles?
Is it C++ with blubber removed?
How is it different from D?
From Go?
...
Trying to fish out from a multi-page reference what makes your language unique and what gripes with other languages it solves is tedious, very few people would do it. It's on you to explain it.
nexthash 8 days ago [-]
Of all languages to implement the XS toolchain in... why did you choose C?
Afaic this is DOA, there is no excuse in implementing the core toolchain of a new language in a memory-unsafe manner in 2026.
ShinTakuya 8 days ago [-]
Plenty of valid reasons to pick C, memory safety isn't a reason to trade off all other possible benefits. One big reason is portability, you can't compile Rust for example for certain targets.
> String methods cover case conversion, trimming, searching, splitting, replacing, padding, classification, and parsing. .len() counts Unicode codepoints, not bytes; use .bytes().len() for raw byte length. Indexing with s[i] works in bytes; negative indices count from the end and out-of-bounds returns null. Several methods have aliases: .find() / .index_of(), .ltrim() / .trim_start(), etc.
Indexing uses bytes and len uses codepoints? Are you mad?
weirdUnicode[weirdUnicode.len()-1] returns random char?
And a = "a"; a[1] is null??
xslang.org also looks great and I found the text in the guide + docs to be easy to read. I usually have to read C#/TS docs, so it was refreshingly terse.
What does it do differently? What problem it solves that other languages don't?
Also, performance numbers. This looks highly complex and I worry that your C backend would underperform similar code in other languages. So let's us know.
1: http://atari-xt.com/ (I really ought to get on that SSL cert, I guess)
Like the built in decorators. I think language design based on what people want to achieve rather than creating the most generic zoo of primitives is underexplored. So this is good.
It works pretty well!
Then... what people want to achieve changes, maybe they want to write a web app instead of desktop, and then you're screwed. Perl was excellent when everything was text... but when things started being XML or JSON or whatever, less so.
It's a fair point though, languages built around practicality have their place.
- JS
- Go
- Java
- Python
I think adding a page about that in the docs could help evaluate the language.
You can improve it by giving a reason for people to want to adopt it. That is bring novel ideas and push the envelope.
As is, it's a very impressive homework.
How's FFI with it? Can we just link any C lib?
How does it compare to others?
Is it C with bells and whistles?
Is it C++ with blubber removed?
How is it different from D?
From Go?
...
Trying to fish out from a multi-page reference what makes your language unique and what gripes with other languages it solves is tedious, very few people would do it. It's on you to explain it.
Afaic this is DOA, there is no excuse in implementing the core toolchain of a new language in a memory-unsafe manner in 2026.