XS Programming Language
Made my language called XS. It's a general-purpose language, currently at v1.2.15 as of this writing. Would like feedback and how I can improve it! Website it at https://xslang.org. There is a playground to try XS out in, and fully complete docs as well. Enjoy!
14 comments
[ 2.3 ms ] story [ 41.5 ms ] threadLike 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.
- JS
- Go
- Java
- Python
I think adding a page about that in the docs could help evaluate the language.
Afaic this is DOA, there is no excuse in implementing the core toolchain of a new language in a memory-unsafe manner in 2026.
1: http://atari-xt.com/ (I really ought to get on that SSL cert, I guess)
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.
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?
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.
> 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??