#85 Scala, Rust, and Durable Computing with John De Goes
Sep 15, 2023
auto_awesome
Expert in Scala, Rust, and durable computing platforms, John De Goes, discusses his Scala & Rust journeys, Golem Cloud, business applications parallelism need, Rust's impressive tooling, differences in meta programming models, building a command line tool with ZOCLI and GraalVM, achieving durability with WebAssembly, exploring potential of durable computing, technology stack, and simplifying reasoning about concurrent programs.
Rust offers advanced type safety and functional programming features, making it a compelling choice for developers.
WebAssembly (Wasm) has strong sandboxing capabilities and enables durable computing, offering scalability and reliability.
Scala and Rust have different approaches to meta programming, with Scala using staged meta programming and Rust relying on macros.
Deep dives
Rust and Scala comparison
The podcast episode discusses the speaker's journey with Scala and Rust, highlighting the strengths and weaknesses of both languages. While the speaker acknowledges the appeal and usefulness of Scala, they express concerns about its maturity, lack of innovation, and decreasing adoption in the industry. On the other hand, they praise Rust for its advanced type system, which allows for safe and performant code, and its potential to become a popular functional programming language. The speaker also mentions other emerging languages like Flix and Rock, but explains that Rust is currently the most compelling choice for developers seeking powerful type safety and functional programming features.
WebAssembly and Wasm
The podcast episode explores the capabilities and potential of WebAssembly (Wasm) as a transformative technology for cloud computing. The speaker discusses the benefits of using Wasm, such as its strong sandboxing capabilities and low overhead, which make it suitable for running programs in a secure and isolated manner. They also highlight how Wasm enables durable computing, allowing for program state to be observed and replayed in the event of failures. The speaker further explains how Golem Cloud leverages Wasm to provide scalability and reliability to its users, and discusses the ongoing advancements in the WebAssembly ecosystem.
Meta Programming in Rust and Scala
The podcast episode delves into a comparison of meta programming in Rust and Scala. The speaker explains that while both languages have meta programming capabilities, they utilize different approaches. In Scala, meta programming is achieved through staged meta programming, which is elegant and powerful but has limitations and requires a lower-level tree DSL for certain tasks. On the other hand, Rust's meta programming relies on macros, which are less elegant but offer greater flexibility and the ability to solve a broader range of problems. The speaker expresses appreciation for the simplicity and accessibility of Rust's macro system, which gets the job done effectively.
The Power of Durable Execution in Cloud Computing
GALOM is a serverless cloud computing platform that focuses on durable execution. Durable execution refers to the ability to ensure that a process or task is completed reliably and robustly, even in the face of failures or disruptions. Traditional programming methods often require complex architectures and external data stores to achieve this level of reliability. GALOM eliminates the need for such complexities by providing a cloud platform that inherently offers automatic robustness and reliability. Users can write and deploy their cloud applications with confidence, knowing that GALOM will handle the durability of execution, allowing them to focus on the business logic.
The Benefits of Concurrency without Parallelism
The current model of concurrency in programming languages relies heavily on parallelism, where multiple threads run simultaneously on separate CPU cores. However, parallelism introduces complications and potential vulnerabilities in multi-threaded code. GALOM proposes a different approach by providing concurrency without parallelism. This means that the execution of a program or application is restricted to a single core at a time, simplifying the reasoning about concurrency and eliminating the need to manage shared memory access across multiple cores. By leveraging concepts like atomic blocks and green threads, GALOM aims to simplify the development of concurrent applications, increase reliability, and reduce complexity.
Our chat with John De Goes starts with his Scala & Rust journeys, then goes into Golem Cloud, a serverless durable computing platform underpinned by Wasm, and ends with a discussion about whether business applications really need parallelism.