• This repository has been archived on 08/Oct/2023
  • Stars
    star
    925
  • Rank 49,378 (Top 1.0 %)
  • Language
    Rust
  • Created about 1 year ago
  • Updated about 1 year ago

Reviews

There are no reviews yet. Be the first to send feedback to the community and the maintainers!

Repository Details

🥖 | Rinha de compiladores (ou interpretadores kkkk

banner

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:

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

More Repositories

1

rinha

🧪 | Rinha de Backend Lean4
Lean
62
star
2

plank

📜 | Functional programming language written in kotlin.
Kotlin
60
star
3

lura

🍞 | IDE focused programming language study
C
32
star
4

eq

🧮 | Writing an Equation Solver
Rust
31
star
5

ticoteco

📱| Tiktok web clone
TypeScript
23
star
6

trazodone

🧪 | LLVM backend for HVM
Rust
19
star
7

soft

🧪 | Lisp with REPL and macros which will compile itself
Rust
13
star
8

bupropion

❤️ | Fancy diagnostics for Miette
Rust
13
star
9

bidir

🍴 | Complete and Easy implementation in Rust
Rust
9
star
10

andesite

🪨 | Minecraft java and bedrock library
Kotlin
8
star
11

gabx.io

📜 | My personal website
TypeScript
8
star
12

sol

🥺 | Sol theorem prover
C
8
star
13

ekko

📘 | Writing Haskell in Kotlin article's project
Kotlin
7
star
14

happy

😃 | The project happy of next level week.
Dart
6
star
15

config-strings

⚙️ | A simple programming language to be used in config strings.
Java
5
star
16

asena

🥺 | Theorem prover focused on UI
Rust
5
star
17

gitkib

💻 | Simple git plataform, for training. Currently on waiting.
Kotlin
4
star
18

aripiprazole

👤 | My profile repository
4
star
19

llvm4k

📚 | LLVM bindings for kotlin multiplatform
Kotlin
3
star
20

sql-builder

💻 | Simple SQL Builder for Java. Currently on waiting
Java
3
star
21

zu

🧪 | Zu Theorem Prover
Rust
3
star
22

kofl

📙 | A functional programming language.
Kotlin
2
star
23

kind.nvim

📀 | Kind programming language plugin for Neovim
Scheme
2
star
24

kam

🏹 | Arrow kt bindings to kotlin popular frameworks
Kotlin
2
star
25

server

💻 | wckd-store server.
Kotlin
2
star
26

react-template

⚛️ | Simple react template with typescript and react router
JavaScript
2
star
27

dots

💻 | My dotfiles
Emacs Lisp
2
star
28

lisy

📘 | Simple type system repl the paper Typing Haskell in Haskell
Haskell
2
star
29

testing-jetpack-compose

🧪 | Testing the jetpack compose api 0.1.0-dev13
Kotlin
2
star
30

brex

🧪 | Type classes in Lisp
Rust
2
star
31

cra-template-gabi-react-template-basic

⚛️ | Simple react template
TypeScript
2
star
32

tanso

🐙 | Minecraft motd server
Rust
2
star
33

learning-android

🧪 | Learning android
Kotlin
1
star
34

dev-radar

💻 | Semana OmniStack 10.
JavaScript
1
star
35

json2java

A json2java conversor. (Includes kotlin also)
1
star
36

lorefy

Needs refactor.
JavaScript
1
star
37

be-the-hero

💻 | Semana OmniStack 11.
JavaScript
1
star
38

vagrank

📦 | Kotlin script vagrant wrapper.
Kotlin
1
star
39

login-tdd-ts

🧪 | Learning Test Driven Development
TypeScript
1
star
40

rpg

🌱 | My first minecraft project
Java
1
star
41

kmp-starter

💻 | Kotlin Multiplatform starter project
Kotlin
1
star
42

xor-neural-network

🌐 | Simple neural network
TypeScript
1
star
43

kt-native-issue-43887

Kotlin
1
star
44

pudim

🍮 | Basic neovim configuration
Fennel
1
star
45

query-poc

🧪 | Query Design POCs for Kind
Rust
1
star
46

debuglog-compiler-plugin

🍀 | Simple compiler plugin
Kotlin
1
star
47

arcano

💻 | Arcano submission
Kotlin
1
star
48

bedrock-void

Minecraft bedrock void server
Kotlin
1
star
49

psychodex

🧪 | Pokedex for drugs
TypeScript
1
star
50

plank2

📜 | Rewrite of Plank programming language in rust
Rust
1
star
51

tree-sitter-lura

🍞 | Tree sitter grammar for Lura programming language
C
1
star
52

db

Elixir
1
star
53

rigid

🪨 | Rigid lisp. The inverse of soft
Rust
1
star
54

forever

⬛ | Forever enigma website
HTML
1
star