bread github

Portfólio

Esse portfólio apresenta projetos desenvolvidos desde 2020, abrangendo linguagens de programação, compiladores, alocadores de memória, inteligência artificial e ferramentas para microcontroladores.

Sumário: python-self-interpreter, mish, compalloc, ras, Millipascal, Chess, UPT, taucon, PQuery, GNA.

python-self-interpreter

Um interpretador de Python escrito em Python, capaz de rodar o próprio código. Foi feito como projeto de conclusão da disciplina "Programação em Python" da UFF. Repositório.

mish

Uma interface de linha de comando para microcontroladores. É implementada diretamente em cima de um alocador linear e consegue rodar com 4KB de memória. Implementa até mesmo um mecanismo de piping entre os comandos. Repositório.

compalloc

Uma biblioteca de alocadores de memória de fácil composição. É possível, por exemplo, colocar um alocador dentro de outro. Foi implementada principalmente para o uso em microcontroladores, para isso, tomei cuidado para atingir bom desempenho e menor tamanho. Repositório.

ras

Um disassembler de UF2 para arquitetura RP2040 da Raspberry Pi. É uma grande gambiarra que implementa a codificação de Arm M0+ na mão, mas funciona. Repositório.

Millipascal

Linguagem autoral e seu respectivo compilador para assembly. É um projeto de compilador moderno, com 4 representações intermediárias do código. A única otimização implementada foi alocação de registradores, mas a linguagem não se sai tão mal quando comparada com C ou Assembly.

Não só implementei um compilador: a "biblioteca padrão" contém implementações de alocadores de memória, números de precisão arbitrária e vários utilitários, tudo isso em Millipascal. Até o print é implementado diretamente na linguagem usando procedimentos em assembly. Repositório.

Chess

Um conjunto de algoritmos de busca e de avaliação para motores de xadrez. A motivação principal era explorar esses algoritmos e, no final, até a melhor combinação de busca e avaliação fazem um péssimo adversário contra um humano. Porém, foi interessante ver como as diferentes estratégias competem uma com a outra. Repositório.

UPT

Um compilador de Portugol para C, com mensagens de erro em português. Repositório.

taucon

Um programa que enumera e testa expressões de cálculo proposicional para satisfação lógica. Repositório.

PQuery

Uma linguagem de busca para acelerar a escrita de queries para views do banco de dados.

Game Networking Abstraction

Uma biblioteca que abstrai os detalhes de networking que ocorrem normalmente em um jogo. Ultimamente parei o desenvolvimento pois o protocolo gob, no qual baseei todo o projeto, não lida muito bem com multicast ou broadcast. Isso fazia o comportamento de serialização ter complexidade quadrática em relação ao número de jogadores. Repositório.