Claude is far too nice and not nearly as skeptical as I want it to be. I suppose second guessing and checking assumptions is very expensive but it's frustrating, and I've found that I need to have a second model in a sort of "skeptical mode" to compensate.
03.08.2025 14:27 β π 0 π 0 π¬ 0 π 0
did the same thing for a toy language recently - I had a few restrictions on returning borrows and storing them, but otherwise it was no-gc safety with no borrow checker.
I'll look forward to what you come up with.
03.08.2025 03:04 β π 1 π 0 π¬ 0 π 0
Extremely common tactic in pseudo science and misinfo. It's even common in really fringey nutty stuff like flat earth arguments.
02.08.2025 03:12 β π 1 π 0 π¬ 1 π 0
OpenAI's Codex needs a lot more work.
20.07.2025 02:34 β π 0 π 0 π¬ 0 π 0
Very glad that "function coloring is good" has stopped being such a hot take.
13.07.2025 18:28 β π 1 π 0 π¬ 0 π 0
I wonder how much ChatGPT usage spikes on Prime Day
11.07.2025 11:50 β π 0 π 0 π¬ 0 π 0
Oh, in the case before X and Y are individual types, Point is its own type. So the generated code is just moving the struct fields of X an Y into Point.
No implicit nullability.
25.06.2025 21:06 β π 1 π 0 π¬ 0 π 0
Hm, not sure what you mean then. I do have struct fields, not just methods, or I'm misunderstanding.
25.06.2025 18:11 β π 0 π 0 π¬ 1 π 0
Support for atoms is now implemented.
24.06.2025 23:29 β π 0 π 0 π¬ 0 π 0
Might do generics later but for now I'm hoping to avoid it and I think with overloading, variadic tuples, inference tricks, comptime, etc, I can get something good without it.
24.06.2025 23:20 β π 0 π 0 π¬ 0 π 0
Also, I'm hoping to avoid generics using features like this + others.
Like, you want a thing with fields x and y? Take a `Point`, and if someone wants to pass in `MyPoint` they can do `{..my_point}` and it'll work fine (and be 0 copy if `my_point` is not used again)
24.06.2025 23:19 β π 0 π 0 π¬ 1 π 0
My hope is that the capability system gives enough opportunity to open up novel optimizations + ability to 0-cost trivially inline Rust will cover the rest.
24.06.2025 23:15 β π 0 π 0 π¬ 1 π 0
This is a GC'd language, so no direct access to pointers (but you can write rust inline if you want that). There's mutability semantics but ultimately it leans hard on CFG-analysis to optimize as much as possible + gives rust as escape hatch.
24.06.2025 23:14 β π 0 π 0 π¬ 2 π 0
I may end up allowing for some sort of scoped anonymous structs that can't be passed to functions but could be used to elide the X and Y here, and eliding Point would be done via inference whenever Point gets passed into a fn. So some combo of inference and restrictions may end up being right UX.
24.06.2025 14:53 β π 1 π 0 π¬ 0 π 0
rust code doesn't compile, afaik it can't
my lang compiles tho
24.06.2025 14:52 β π 1 π 0 π¬ 2 π 0
I hadn't! I thought there was a lang proposal for something like this but didn't know there was a crate. Interestingggggg.
This + another idea I had may be what I need, although for now I went with a superpowered spread operator.
24.06.2025 14:49 β π 0 π 0 π¬ 1 π 0
Running into a particularly challenging issue. I want anonymous structs in my language. Doing this in a way that's zero cost + compiling to Rust is *hard*. In particular, the first pass I have is to gen `HasX` traits for each prop, but then rust borrows the entire `self`, making moves impossible.
24.06.2025 10:22 β π 1 π 0 π¬ 1 π 0
I can know that functions are pure, when they allocate, etc. I can track aliasing, 'last use', etc. It's valid for my language to consider allocations side-effect free, which I don't think is the case in Rust/ LLVM IR.
I also track integer value min/max via a CFG and prellocate based on them.
23.06.2025 17:54 β π 0 π 0 π¬ 0 π 0
My language is now faster than rust... sometimes.
Faster default hasher + the effects system opens up novel optimization opportunities.
23.06.2025 17:52 β π 1 π 0 π¬ 1 π 0
got capabilities done
22.06.2025 00:40 β π 0 π 0 π¬ 0 π 0
Also, the language supports writing inline rust so if you really want that full rust perf you have it available to you at any time.
20.06.2025 22:11 β π 0 π 0 π¬ 0 π 0
Integer operations are basically as fast as Rust in the common cases so that's nice, it's objects, especially deeply nested objects, where I need to rely on optimization passes.
Thankfully my language has pretty rich types.
20.06.2025 22:06 β π 0 π 0 π¬ 1 π 0
Spent time writing some basic optimizations for codegen. I've doubled the performance of some operations. Still much slower than Rust, but I'm about to write a CFG to do a lot more optimization. And there's still low hanging fruit.
20.06.2025 22:04 β π 0 π 0 π¬ 1 π 0
My language now supports inference of union types in a way that's really neat and compiles to a rust enum under the hood. Full Hindley-Milner with unification, lots of type tracking info that I may use later like *where* a type comes from (for flow typing and refining later!).
19.06.2025 20:56 β π 1 π 0 π¬ 0 π 0
Anyone aware of good type system stuff for GC'd languages that track mutable vs immutable references? Seems like you basically end up with regular reference types + specially marked "unique" types where unique types have tracked references.
19.06.2025 18:44 β π 0 π 0 π¬ 0 π 0
Writing this programming language and documenting it all as I go. Then I give cursor a prompt to try learning the language from docs and generate test projects as it goes, validating every bit of documentation.
Either it finds bugs in the docs or bugs in the compiler, extremely helpful.
15.06.2025 20:41 β π 0 π 0 π¬ 0 π 0
Time to try to give my programming language reference types.
14.06.2025 11:48 β π 0 π 0 π¬ 0 π 0
I've always used it, literally since like... middle school papers. I can find so many old blog posts from 2012 that are absolutely full of them. web.archive.org/web/20150205...
Just a random wayback and there are 4 right there.
14.06.2025 03:12 β π 1 π 0 π¬ 0 π 0
Some neat things that make it a happier dev UX than Rust.
1. List and map comprehensions.
`let numbers = [1, 2, 3, 4, 5];`
2. Inferred union types.
`let mixed: List<string, bool> = ["test", true];`
3. Limited borrow check (can't return refs but no lifetimes to manage):
`fn takes(foo: &string)`
11.06.2025 16:10 β π 0 π 0 π¬ 0 π 0
π¦Better software for better government π¦
goingforbrooke.com
traffickingfreetomorrow.com
hi, I'm amos! π they/them π« open-source witch & maker of snappy videos and articles at @bearcove.eu β¨ be kind, be curious
articles: https://fasterthanli.me
videos: https://youtube.com/@fasterthanlime
podcast: https://sdr-podcast.com
reverse engineering, cryptography, exploits, hardware, file formats, and generally giving computers a hard time
Fedi: @retr0id@retr0.id
Macroblog: https://www.da.vidbuchanan.co.uk/blog/
Software Design Loudmouth. Works for Thoughtworks. Also hikes, watches theater, and plays modern board games. He/him.
host of https://martinfowler.com
Everlasting student Β· Rails Core Β· Zeitwerk Β· Freelance Β· Life lover
Independent AI researcher, creator of datasette.io and llm.datasette.io, building open source tools for data journalism, writing about a lot of stuff at https://simonwillison.net/
#rustlang, #jj-vcs, atproto, shitposts, urbanism. I contain multitudes.
Working on #ruelang but just for fun.
Currently in Austin, TX, but from Pittsburgh. Previously in Bushwick, the Mission, LA.
The workflow and AI orchestration platform loved by security-minded teams.
Try our always-free Community Edition: http://tines.com/community-edition
Cloud security historian.
Developed http://flaws.cloud, CloudMapper, and Parliament.
Founding team for fwdcloudsec.org
Principal Cloud Security Researcher at Wiz.
official Bluesky account (check usernameπ)
Bugs, feature requests, feedback: support@bsky.app