百科.dev
全部条目AI 编程趋势榜开源项目技术资讯提交条目
登录
< 返回工具列表
R

rinha-de-compiler

> 编程语言
开源

| 编译器或解释器集合 (kkkk)

924 stars0 点赞0 次浏览
访问官网GitHub

工具介绍

| 编译器或解释器集合 (kkkk)

Introdução

O ideal da rinha é fazer um interpretador ou compilador que rode em uma maquina com 2 núcleos e 2G de RAM.

O seu interpretador ou compilador deve trabalhar com algo chamado "árvore sintática abstrata" que está armazenada no formato JSON. Essa árvore sintática abstrata será gerada por nós usando uma ferramenta específica disponível neste repositório.

Sua responsabilidade na tarefa é receber esse JSON que contém a árvore abstrata e, em seguida, interpretar ou compilar o programa de acordo com as informações fornecidas na árvore abstrata.

Simplificando:

  1. Nós te damos um JSON com uma árvore dentro
  2. Voce roda o JSON
  3. Voce fica feliz que apareceu o resultado.

Para executar

Cada projeto deve ter seu próprio Dockerfile para que consigamos rodar

Como testar

Para testar você pode usar o arquivo files/fib.rinha e gerar com o programa que disponibilizamos aqui para um JSON ou você pode usar diretamente o JSON que está em files/fib.json.

Durante a rinha nós iremos adicionar outros testes :)

Requisitos

Você tem que fazer um PR, alterando o arquivo PARTICIPANTS.md, com uma nova linha e seu repositório. Talvez isso seja mudado depois (fique atento).

Seu repositório terá que ter uma imagem no root do repositório, e buildaremos a imagem no rankeamento.

Especificação

A linguagem terá que rodar com base em algum arquivo, que é o JSON da AST da rinha especificado aqui.

  1. O arquivo terá que ser lido de /var/rinha/source.rinha.json
  2. Poderá também ser lido de /var/rinha/source.rinha, se você quiser ler a AST na mão.

A linguagem é uma linguagem de programação dinâmica, como JavaScript, Ruby, etc.

O projeto da rinha de compilador, tem um "interpretador" do json, que retorna um AST, e o código terá que ser testado de diferentes formas, como outros algorítimos além de Fibonacci.

Exemplo

Exemplo com fibonacci

let fib = fn (n) => {
  if (n < 2) {
    n
  } else {
    fib(n - 1) + fib(n - 2)
  }
};

print("fib: " + fib(10))

Competição

O prazo para mandar os PRs, é até o dia 23/09, depois disso serão negados o projeto.

Será liberado para ajustes até o dia 27/09, você poderá arrumar sua implementação, depois da publicação dos testes.

Resultados

Rank Name Language TYpe Points
1 Raphael M. R. Victal Golang Tree-Walker 72786
2 Tacio Golang Tree-Walker 72582
3 cleissonbarbosa Haskell Tree-Walker 72458
4 Danfs TypeScript Tree-Walker 70096
5 Valmor Flores Flutter 69584
6 Victor Augusto TypeScript Tree-Walker 69273
7 fabiosvm C Bytecode Interpreter 68737
8 coproduto ⚡Zig Tree-Walker 68647
9 Adriano dos Santos Fernandes C++ Tree-Walker 68309
10 Ítalo Paulino (irbp) Dart Tree-Walker 67919

Recursos

Alguns recursos úteis para aprender como fazer seu próprio interpretador ou compilador são:

  • https://www.youtube.com/watch?v=t77ThZNCJGY
  • https://www.youtube.com/watch?v=LCslqgM48D4
  • https://ruslanspivak.com/lsbasi-part1/
  • https://www.youtube.com/playlist?list=PLjcmNukBom6--0we1zrpoUE2GuRD-Me6W
  • https://www.plai.org/

Fique ligado que alguns vídeos e posts úteis chegarão em breve.

Issues· 0 开放

查看全部 Issues在 GitHub 打开

暂无开放 Issues,或尚未同步最近议题。

> 标签

Rustrinharinha-de-compilersrust

暂无评论,来聊聊你的看法吧

> 工具信息

发布日期2026年8月1日
最后更新2026年9月17日
分类编程语言
定价开源

> 相关工具

T
TypeScript
JavaScript 的超集,为前端与全栈提供静态类型
P
Python
通用编程语言,广泛用于 Web、数据与 AI
G
Go
Google 推出的简洁高效系统语言