Show HN: Bon – programming language designed for simplicity, performance, safety
github.com
github.com
The basic features of a new language is hard as you can see the posting what expected. Macro (may not be lisp level but template), memory Managrment, purpose (embedded, os, driver and application, ai library, CUDA, mobile app etc.), library, platform, examples and q&a under stackoverflow etc.
... wonder what is the point of learning a new one.
I'm a big fan of Crystal-lang, and I dig the similarity in the sense of "let's start with Ruby-like syntax, and add more static structure". I can see the difference here as being that Bon appears to behave more like Haskell or OCaml rather than like Ruby, which means that there's still a good niche here.
I hope this neat language finds success!
Sorry if these are n00b questions. Bon seems like it could be a nice mix of the wonderful syntax of a python or ruby, and the speed of a C or C++ (or at least a compiled language)
Memory will be garbage collected, though I am aiming for zero-cost as much as possible. At the moment it just leaks memory like a sieve as I work out the semantics.
You can indeed import standard c library calls by using a cdef. You can find examples in the stdlib, e.g.:
cdef sqrt(x:float) -> float
Thanks again for taking a look!
1: https://words.steveklabnik.com/borrow-checking-escape-analys...
A fast scripting language that is not a PITA, and not tied to a proprietary ecosystem, could carve out a place.
But please ensure that something like destructors remain possible and uncrippled. There are so many more kinds of resources to manage than memory, and we are beginning to accumulate many kinds of memory, too. When you have a solution for general resource management, memory management itself becomes a trivium, or gets locally tunable.
https://lobste.rs/s/lp0lou/rust_programming_language_seven_r...
Have you seen Crystal? It would fit that description
What's it bad at?
> Memory will be garbage collected, though I am aiming for zero-cost as much as possible. At the moment it just leaks memory like a sieve as I work out the semantics. [0]
I think the biggest game changers for any new language is a highly competitive standard library out of the box: web server of sorts that can somewhat scale out of the box is usually a must, but at least a simple enough one is ok too, file IO, crypto, etc are also useful, the less code I have to write the more productive I feel.
Package management is a must too, even if primitive at first (Go's approach is clean and decentralized to some degree, I love that).
This isn't to say that better performance isn't achievable in languages with manual memory management, but doing so often requires a special effort that just isn't going to happen most the time, for reasons of practicality.
That said, there are certain classes of program where the story is different: https://en.wikipedia.org/wiki/The_Computer_Language_Benchmar...
That's a fair comment. I will say however that the references to performance are more an attempt to keep it in mind from the beginning, rather than being an assertion at this point. I only began working on it shortly after my mom passed away last month (it's dedicated and named after her), so at this stage I'm mostly goal setting and rapidly prototyping.
I hope you can take time to give it another look when its further along. Thanks!
[0] https://github.com/FBMachine/bon/blob/master/examples/equali...
[1] https://github.com/FBMachine/bon/blob/master/examples/multip...
https://github.com/FBMachine/bon/blob/auto_mem/docs/ch02-01-...
Thanks for all of the feedback!
Swift has: much nicer handling of optional values, static typing, better for OOP, function calls via dot notation, zero-based indexing.
Julia has: better ecosystem for scientific computing, the standard library makes lot of things easier, better REPL, working with arrays is easier.
(Just from the top of my head, there are other things.)
Bon, along with New B, was an immediate ancestor to C. The history gets more confusing with another Bon showing up half a century later.
Bon was created for Multics by Ken Thompson. His wife Bonnie, like this other person's mother, was the inspiration for the name.
Ken Thompson has naming priority.
This was purely for simplicity (they can be implemented in a couple of lines of code with algebraic data types). Simplicity of implementation is certainly not my priority, just a short term drive, so it will be revisited in the near future.
Thanks!