6 karma · joined January 3, 2022
What I'd love feedback on:
1. Is the @decorator syntax clear or confusing?
2. Would you use this for a real project?
3. What's the #1 missing feature?
Repo: https://github.com/nynrathod/doolang
Examples: https://github.com/nynrathod/doolang/tree/main/examples
0.2.0 Alpha is the biggest update so far. It adds the core foundation for built-in methods, a stronger std library, file I/O, improved modules, error handling, enums, match, array features, map improvements, JSON support, and more.
Highlights
Built-in methods
- Array: len, push, pop, contains, first, last, reverse, isEmpty, clear, sort, slice, indexOf, map, filter, reduce, join - Map: has, remove, isEmpty, size, clear, keys, values - String: len, charAt, subString, toUpper, toLower, contains, startsWith, endsWith, trim, reverse, indexOf, replace, repeat, concat, charCode, countSubstr
Std library
- Array utils: Unique, Range, Sum, Average, MinArr, MaxArr - Math: Abs, Pow, Sqrt, Min, Max, Floor, Ceil, Round - File: Read, Write, Append, Exists, Delete, Size, MkDir, Metadata, ListDir, Copy, Move, ReadLines, RmDir, RmDirAll
Modules & language features
- Imports (namespace, wildcard, alias, inline) - Functions with tuple return, struct + JSON support - Error handling (T!E, ? operator, propagation, custom errors) - Structs with methods, nested structs, shorthand, enums inside structs - Enum types (scoped + inline) - match on primitives, struct, enum, nested match - JSON parse/stringify - Lambda + chained array methods - Inline if/else, ternary in expressions - Array spread, ranges ([...arr], [1..4], [1..=4]) - Improved map iteration - typeOf, cast operators, ++/-- - UTF-8 print
Examples folder => https://github.com/nynrathod/doolang/tree/main/examples
The goal is to keep Doo simple but practical: something you can use to build real APIs or tools quickly without a huge language surface or runtime complexity.
If anyone here enjoys language design, I'd love feedback. It's still early alpha, and I'm very open to feedback. If anything feels weird, confusing, too limited, or too magical, please tell me, I want to shape this based on real developer expectations, not just my preferences.
I launched doo: Simple Fast and Secure compiled programming language written in rust+LLVM.
My Idea is to have simplicity to write server apis with minimalist and clean syntax. Not started as hobby project but I wanna grow this.
I got many feedback and suggestions here https://news.ycombinator.com/item?id=45797044 that I need some specific feature for doolang or have to turn this in unique product. But I don't have any buzzing idea or feature except minimalist and clean syntax with speed and security for writing server apis where compiler may do behind the scene magic to have high level syntax without any compromise.
What do you think, any idea or suggestion to turn dooalng any domain specific language or any killing unique feature or anything that make doolang its place? My intensions is not to replace any existing language. I will release built in methods and std library in upcoming release, so its just staring of doolang yet, after it will add more test cases and memory test and bug fixes more. And http router is next planned after those.
Any suggestions from community will be valuable.
Struct enums are base of any type safe language will surely add in upcoming releases.
And really make sense your point to have usp or any unique or good feature doolang should have. As this is just starting point of doolang, and honestly i never started this as hobby project I want this to be mature over years not to replace any languge but to have simplicity for writing servers and apis. after few months I will definitely integrate this with my own production note taking app once i improve this language.
Reference counting i Introduce for auto memroy mgmt only, as rust ownership and borrow method will be extreme complex to implement as solo dev i feel.
But now im clear now language should have any special feature or target which is lacking, idk what to find for this, but it will be valuable if you can suggest, im also thinking to have new post to ask feedback from community what they want in such language. Any suggestion?
Only support this as of now
fn Foo(x: Int) { x = 123; // Only modifies Foo's local copy print("inside Foo", x); // Print 123 } fn main() { let x: Int = 0; Foo(x); // x is still 0 here after Foo returns print("out x", x); // Print 0 }
For complex types (strings, arrays, maps), values are reference-counted and passed by reference. If you pass such a value to a function, you're sharing the same object—mutations affect the original. For primitives (Int, Bool), it's pass-by-value (copy).
Doolang not uses any traits like rust. Rust is great language, but its expose everything in syntax that is also great but as developer who want security+speed with fast development may found issue writing rust, that is main goal of doolang simlicity. I'm still figuring out further design principle of syntax to have less exposing syntax.
Doolang have auto memory management with reference counting. Just simple mut keyword introduced for mutating variable let mut data = "data"; no other syntax expose all handling automatic with rc and auto type define if not defined explicitly
Yeah make sense, but I don't have any buzzing goal right now, doolang is not any dsl, just to ensure high level syntax for developer writing backend servers apis. And not started as learning project. Will move forward as per feedback of community and requirement but not such specific target im aiming. so again simple concept is keep it simple to write with speed and security
So main goal of this language is to have simplicity while writing code. Rust is great will dominate, but as dev who want speed and security but with high level syntax, doolang is best for them. Right now im working on std library and inbuilt function, and moving forward I will integrate doolang with my own note taking app uoozer note https://play.google.com/store/apps/details?id=com.uoozer.not... , 550+ test cases covered by doolang already with valgrind memroy test too.
so for roadmap, after inbuilt functions and standard library deployment will build http router and will test real world scenario for api dev. IF all well then will integrate with uoozer note.