Research

As part of developing Rhovas, there are a few keys areas of research that have been explored. Some of this is more formalized than others, but they have all been major points of influence for the language in one way or another.

Additionally, note that this may not reflect the current state of Rhovas - the language is still evolving and has been for multiple years, so naturally some differences exist as our research improves!

Mutability

Most of the early research for Rhovas has been on mutability, which was heavily inspired by Pony's reference capabilities as well as Rust's ownership. reference capabilities and Rust's ownership. This starts as just mutable and immutable permissions, but quickly gets more complex to account for read-only (readable), deeply immutable (constant), and single ownership (unique) permissions.

This research was presented at the University of Florida's Undergraduate Research Symposium and adopted into a talk at SwampHacks 2020. Unfortunately, neither of these resources are publicly available at this time; hopefully once the Rhovas implementation is ready for this research in this area will resume.

Embedded DSLs

Modern software often relies on a large number of interconnected languages - a website has a frontend using HTML and JavaScript, multiple backends exist each in their own language with different SQL dialects, and they're all connected in the cloud configured by DSLs like Terraform. The ability to fully embed a DSL into your code (rather than using strings as is often the case) is incredibly useful, but also presents many challenges with parsing and semantic analysis. Rhovas has developed a novel solution for this called syntax macros, which are capable of just about anything an DSL may require.

There are two blog posts summarizing this research, Introducing Syntax Macros (Honor's Thesis) which covers parsing, and Semantic Analysis Abstractions (Master's Thesis) which covers analysis. Links to the full theses are contained within and are relatively approachable as far as academic papers go.

API Compatability

As a language specifically for APIs, API (and ABI) compatability is a major topic of research. The focus here is primarily on identifying what changes constitute API breakages, how we can specify restrictions on these changes, and developing better approaches to managing dependencies.

A good overview of this research was presented at PackagingCon 2021, titled Versioning for User-Facing Changes vs API Breakages. A summary, slide deck, and video recording are all available.