-
I find the language and its concepts incredibly compelling. I have even seen some evidence that other projects/languages are learning from FBIP and the Perceus garbage collector. Is it the aim of the project to solely drive forward the research being done whilst treating the language basically as a byproduct, or will Koka eventually be "ready" for general-purpose projects written by less academically inclined users? If this is not the right location for such a question, feel to close/prune. Thanks! |
Beta Was this translation helpful? Give feedback.
Replies: 3 comments
-
Many new languages are developed all the time, but only few bring fundamentally new things to the table (like Rust for example did with borrowing, or Haskell with pure FP). With Koka, development has been slow as we have been tackling hard issues (like Perceus compiler guided reference counting) and novel design (like algebraic effect handlers). At this point, Koka is really getting there though with most of the fundamental design in place (still some to do with implicits and better mutable data types). The compiler and runtime has aways been developed with real-world use in mind with a high quality runtime/allocator/compiler -- it was never intended as a by-product of research; rather the other way around where research and semantics enable good design and compilation. (well, beside explicit mutable state/arrays at the moment) The goal at this point is definitely to make it more useable outside the research we are doing, but there are a few outstanding things that need to be done usability wise: 1. the async library on top of libuv -- we hope to get to that this year still and Tim already has a working fork of this, and 2. a plan for package management. With those things in place I think Koka can be ready for more growth with more outside contributions. On the other hand, slow growth with a small community can be good while still getting the foundation right :-) At MSR, Koka has good support from management, and I am always looking for ways to grow a team at some point and start applying Koka in real-world settings (in particular once async/libuv lands). The dream is C-like performance on larger asynchronous services, but with beautiful abstraction, solid semantics, and (predictable and minimal) automatic memory management. I think we can get there, but there is still some ways to go. For now, still best suited for students, PhD's, and enthusiasts :-) Fingers crossed! |
Beta Was this translation helpful? Give feedback.
-
I really appreciate the in-depth response! I am looking forward to seeing what 2025 brings for Koka. I think the mixture of features, especially the effect system, will be profoundly useful and approachable to more typical users. Async support in particular will probably spur on a lot of curious users who haven't tried Koka yet. I hope my remark about Koka being a by-product of research wasn't taken as an offense, I meant quite the opposite! I'm not an academic, but I'm often very enamored with some of the things I see MSR doing. I think research often propagates into other languages and makes programming more enjoyable for everybody eventually. |
Beta Was this translation helpful? Give feedback.
-
Thanks @wrq -- and, no offense taken :-) It wasn't meant that way -- I wrote it to stress that it is our eventual goals of using this language for real that drives the research; Koka represents how we would like to express our programs and some times we need to really rethink how to do things (like Perceus). I would like Koka to be the C of FP :-). MSR is a fantastic place and I am deeply grateful that we have the opportunity to really explore new ways of improving programming language design -- glad you enjoy it. |
Beta Was this translation helpful? Give feedback.
Many new languages are developed all the time, but only few bring fundamentally new things to the table (like Rust for example did with borrowing, or Haskell with pure FP). With Koka, development has been slow as we have been tackling hard issues (like Perceus compiler guided reference counting) and novel design (like algebraic effect handlers). At this point, Koka is really getting there though with most of the fundamental design in place (still some to do with implicits and better mutable data types). The compiler and runtime has aways been developed with real-world use in mind with a high quality runtime/allocator/compiler -- it was never intended as a by-product of research; rather th…