Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Aventuras com a BEAM

Cherry Ramatis
May 26, 2024
14

Aventuras com a BEAM

Nessa palestra vamos entender o que é a BEAM, porque ela é tão interessante para a web moderna e porque tantas tecnologias atuais estão compilando para BEAM ou mesmo tentando recriar suas funcionalidades. Também vai ser mostrado um projeto de exemplo sobre como foi minha jornada para criar uma mini linguagem de exemplo que compila tanto para a BEAM quanto para Erlang.

Cherry Ramatis

May 26, 2024
Tweet

Transcript

  1. Aventuras com a BEAM: Por que essa VM está sendo

    tão falada ultimamente? Ou em outras palavras: Uma iniciante em elixir tentando compilar uma mini linguagem para a BEAM e descobrindo coisinhas novas
  2. Quem sou eu? - Cherry Ramatis - Mulher trans 🏳⚧

    - Desenvolvedora web a 5 anos - Curiosa por Elixir e programação funcional - Usuária de vim em recuperação após usar emacs - Escritora técnica no dev.to - Moderadora da He4rt Delas - Fun fact: Essa é minha primeira palestra presencial \o/
  3. O que diacho é a BEAM? My Code OTP (Lib

    Erlang) BEAM Erlang Runtime (ERTS) OS My Code OTP (Lib Erlang) BEAM Erlang Runtime (ERTS) OS Elixir
  4. Distribuido por padrão My Code OTP (Lib Erlang) BEAM Erlang

    Runtime (ERTS) OS My Code OTP (Lib Erlang) BEAM Erlang Runtime (ERTS) OS Network
  5. Qual o objetivo desse projetinho? Fazer o parse de uma

    pseudo linguagem com seguinte estrutura: func_name = Integer Gerar um arquivo .beam com o módulo e a função carregadas Carregar o módulo em um REPL erlang ou elixir
  6. Planos futuros para o projeto - Suportar operadores com os

    números - Suportar encoding de string - Entender como executar funções
  7. Um pouco sobre os chunks desse arquivo que compilamos Import

    Chunk Export Chunk Contem os indexes do atom que representa as funções importadas do módulo Contem os indexes do atom que representa as funções exportadas do módulo Atoms Chunk Contem uma lista de todos os simbolos encontrados no módulo (inclusive nome do modulo e de funções) String Chunk Contem todas as strings constantes do módulo como uma string concatenada.
  8. Code Chunk Contém o encoding de cada função no módulo

    com suas respectivas instruções asm Um pouco sobre os chunks desse arquivo que compilamos
  9. Code Chunk Contém o encoding de cada função no módulo

    com suas respectivas instruções asm Um pouco sobre os chunks desse arquivo que compilamos
  10. Code Chunk Contém o encoding de cada função no módulo

    com suas respectivas instruções asm Um pouco sobre os chunks desse arquivo que compilamos
  11. Minha experiência com essa aventura toda - Mesmo sem tanta

    documentação ao redor dos detalhes da BEAM e ERTS, é relativamente acessível de entender e construir algo em volta - Pessoas que criam linguagens de programação são realmente incríveis - Debug de byte no elixir?.....Tricky - No geral? Foi muito divertido aprender mais sobre o ecossistema!
  12. Referências para quem quiser se aventurar - The Beam Book:

    https://blog.stenmans.org/theBeamBook - [Tsoding] I made a new programming language: https:// www.youtube.com/watch?v=6k_sR6yCvps - [Mariano Guerra & Robert Virding] - Implementing Languages on the BEAM: https://www.youtube.com/watch?v=0MTiqI9v-ck