Executando verificação de segurança...
1

Pelo que li aqui me parece que você propõe que seja criada uma nova linguagem de programação que se chamaria "Spiral" e juntaria as capacidades de Rust e Elixir nela própria?

Se for isso eu me pergunto o "Porquê" Por que criar essa nova linguagem?

Qual a "dor" que essa linguagem resolveria?

Essas perguntas minhas são bem alto nível porque ainda tem perguntas como:

1 - Elixir roda no Erlang... logo o Erlang VM em si que tem o "poder", O Elixir é como se fosse um Wraper que usa o poder do Erlang.

2 - O rusto compila para código de máquina, mas a features dele são únicas, não tem Garbage Collection, tem conceitos únicos de Borrow Checker ... Os dados podem ser alterados com "mut" e "emprestados".

Essas duas linguagens tem conceitos que não se dão bem juntos! Para o erlang garantir tudo que você mencionou ele não pode emprestar nada para ninguém com variáveis e tudo precisa ser imútavel.. Isso vai contra a política do Rust e vice-versa.

Criar uma coisa como essa que você ta falando é "estranho", tem que ver uma razão excelente para pessoas dedicarem tempo em uma tecnologia como essa.

Carregando publicação patrocinada...
1

Erlang é uma linguagem dinâmica e Elixir também. É um wrapper que se baseia na sintaxe de Ruby, resolve muitos problemas, mas ainda dinâmica. Outras linguagens também estão sendo criadas para se aproveitar da Erlang VM, como Gleam, que é estática porém sem metaprogramação, sendo não tão genérica como Spiral.

A dor se chama “Modelagem de Domínio”. O objetivo é escrever todas as regras de negócio e algoritmos críticos utilizando Tipos Soma (também chamados de ADTs/Algebraic Data Types). Os enums de Rust possuem esse poder, só que a linguagem não é primariamente funcional e possui uma sintaxe semelhante a C (como Gleam). Acredito que uma modelagem de domínio adequada deve utilizar linguagens estáticas que seguem a teoria Hindley-Milner, como F#, OCaml, Haskell e Spiral. Seguem dois blog posts que abordam o assunto:

Ao utilizar Spiral pra compilar pra Rust, sua funcionalidade de inlining duplica código escrito uma só vez pra diferentes seções da stack, perdendo a necessidade de “clonar” memória em algumas partes. Preciso testar e documentar melhor essa parte, mas é algo que percebi nos meus experimentos, utilizar Rust e ao mesmo tempo dar “bypass” no borrow checker, onde o output seria mais imutável. Isso é algo bom? Acho que sim. A mesma abordagem levaria a ganhos de performance ao rodar esse mesmo código compilado pra Elixir na Erlang VM.

Resumindo, a ideia é escrever aplicações utilizando uma sintaxe ergonômica e universal pra compilar pra diferentes ambientes de execução de acordo com a necessidade. Utilizei Rust e Elixir como exemplo porque resolvem a maioria dos problemas atuais, poderia ser qualquer destino, como Kotlin, Flutter e Java, pra auxiliar na migração de um legado.

Fica a indagação: considerando o blog post abaixo, em questão de reuso de código, como seria se o Discord utilizasse Spiral pra compilar pra Elixir e Rust?
https://discord.com/blog/using-rust-to-scale-elixir-for-11-million-concurrent-users