top | item 42939707

(no title)

isaacvando | 1 year ago

Roc couldn't be optimized for writing the Roc compiler without sacrificing some of its own goals. For example, Roc is completely memory-safe, but the compiler needs to do memory-unsafe things. Introducing memory-unsafety into Roc would just make it worse. Roc has excellent performance, but it will never be as fast as a systems language that allows you to do manual memory management. This is by design and is what you want for the vast majority of applications.

There are a number of new imperative features that have been (or will be) added to the language that capture a lot of the convenience of imperative languages without losing functional guarantees. Richard gave a talk about it here: https://youtu.be/42TUAKhzlRI?feature=shared.

discuss

order

int_19h|1 year ago

It still feels kinda weird. Parsers, compilers etc are traditionally considered one of the "natural" applications for functional programming languages.

pjmlp|1 year ago

There are plenty of compilers written in memory safe languages, including the list of self hosted ones linked from the gist describing the rewrite.

Muromec|1 year ago

>but the compiler needs to do memory-unsafe things

sorry, but why?

mrkeen|1 year ago

I am also skeptical.

A compiler is a function from source code strings to binary bytes. Writing out instructions to do memory-unsafe things is not in itself a memory-unsafe activity.

isaacvando|1 year ago

I believe the main reason is for achieving the best possible performance. Someone closer to the compiler could give more detail.