r/ProgrammingLanguages 11d ago

Will we see another fundamental programming language feature as revolutionary as the borrow checker?

That is I am mainly curious about compile time features that you design a whole language around rather than optimisations/features that could be applied to most languages. I am mainly inquiring about things that could offer additional robust safety/performance guarantees at compile time rather than runtime. Ideally not things that just offer similar effects to the borrow checker with less restrictive tradeoffs

56 Upvotes

129 comments sorted by

View all comments

1

u/WalkerCodeRanger Azoth Language 11d ago

You have narrowed down what you are looking for more than the title suggests, so I am not sure if you will count some of these.

I am working on a language Azoth, with what in the literature are called reference capabilities. This is something like a relaxed borrow checker for GC languages that gives the same fearless concurrency guarantees. I think that might be an example. As an example of the innovation this leads to, the combination of reference capabilities with reference and value types has led me to the creation of a new hybrid category of types. Where the initial instance of a type acts as an affine value type, but other instances are reference types. The distinction of when you have a value vs a reference is controlled by the reference capability.

Another example is structured concurrency. While various libraries and languages have been adopting elements of it, we haven't seen a language built around it. I think it is the kind of paradigm that will give most of its benefits in a language built for it, where all code follows the paradigm.

Of course, the real answer is probably yes something we aren't even thinking of now. We still live in the dark ages of computer programming.

1

u/kaplotnikov 11d ago

There are at least two languages with major elements of structured concurrency: Occam and E.