Recent submissions

Comment · 2 months ago
Blorp. https://blorp-lang.org

It takes inspiration from Python, Rust, Go, and functional programming. It's oriented toward readability, safety, and speed.

I'm finishing up the journey of completely self-hosting. Then I'll be tidying it up for an initial release.

Comment · 3 months ago
https://blorp-lang.org

Taking a bit of a detour with self-hosting the language, now that the syntactic surface, standard library, and initial dependency strategy are on a decent footing.

With any luck, by the end of the week, I'll start prepping for a 0.0.1 release.

Comment · 5 months ago
The memory management model is automatic reference counting, with some optimizations, such as perseus for compile time reference counting where possible, and copy-on-write at runtime.
Comment · 5 months ago
I'm the creator of Blorp -- this made me chuckle a bit. I hadn't even considered that possibility.
Comment · 5 months ago
Yes, it's python-inspired. Some notable differences are: - no return keyword - match/if are expressions - it's functional - =? is used for early returns or binding, depending on the variant of an Option or Result that is returned

There's a lot of other differences -- it's a smaller language surface than Python overall.

Comment · 5 months ago
Yeah, this is the idea. This chaining is exactly the same as the pipeline operator in some some function languages, except that it hopefully reads in a more familiar way to programmers of non-functional languages.
Comment · 5 months ago
Yes, blorp does that. And it also allows local mutation and loops inside pure functions, so performance doesn't need to be left on the table in most cases.
Comment · 5 months ago
Hi, maintanier of blorp here. I think you mean that [1,2,3].map(func(x): x *2).filter(func(x): x > 5) would iterate twice, correct? Under the hood blorp optimizes that away for the functions we can. It constructs a loop and combines logic into a single iteration where possible.

Of course, blorp also allows local mutation in loops (even in pure functions, so long as the logic is contained to the function), so if there's a specific algorithm you'd rather express in a loop, you can.

Comment · 5 months ago
Hey - I'm the creator of Blorp, and like a lot of the ideas you have in Roc! Did you consider having opt-in purity? Or some other means of conveying impurity other than "!"?
Comment · 5 months ago
It's called blorp because it's the name of a stegosaurus my kids and I made up.
Comment · 5 months ago
Hey... I'm the maintainer and had no idea this was posted. The reason pure is required is because it's clear and opt-in. There's a CLI subcommand called purify that will help identify pure functions that haven't been deemed so if that's desired.

But there can be many (small) applications where pure doesn't even matter, so I don't really want to force someone to write "impure" for the main function, for example.

Comment · 5 months ago
Still incomplete there. But yeah performance should be decent. Not aiming for parity either rust or go entirely but in the same ball park is the expectation.
Comment · 5 months ago
Yeah, no shared mutable memory; coordination is done via channels.
Comment · 5 months ago
How is compiling to zig? I considered doing it but chose C instead because of how much zig is still changing. I've considered using it's C compiler for targeting multiple platforms locally.
Comment · 5 months ago
No, blorp doesn't use affine types (one or zero uses). In blorp, ownership is not explicitly controlled by users at all, so it's opaque. Under the hood, it's perceus for compile-time ownership and borrowing and automatic reference counting with copy-on-write optimizations for the runtime. This is made reasonably easy for the compiler to reason about in blorp because semantically it doesn't _really_ have in-place mutation -- `var` really means "re-bindable" to a new value; and then under the hood we'll mutate in place where we can.

Live from the official Hacker News API

A modern reader for Hacker News · SvelteKit + Skeleton