Pular para o conteúdo
Logotipo da Flecha

Programe perto do metal. Mantenha a intenção visível.

Flecha é uma linguagem de sistemas, estaticamente tipada e em estágio inicial, voltada à execução previsível, operações explícitas de memória e alvos nativos.
v0.1.2Versão marcada mais recente
Alvos nativosCompilação baseada em LLVM
Estágio inicialAPIs e sintaxe ainda podem evoluir
Testável desde o projeto

Genéricos, módulos e asserções em um só fluxo nativo.

Testes em Flecha são código tipado comum, com declarações test de primeira classe. Importe módulos reutilizáveis, exercite algoritmos genéricos sobre fatias e confira os resultados com a biblioteca padrão de asserções.

Execute a suíte com flecha test e conte com as mesmas verificações do compilador usadas no código de produção.

algorithms_test.fl
module algorithms_test;
@imports
:: root::containers::algorithms
:: lib::std::tests::testing
:: lib::std::tests::asserts;
test index_of_finds_the_first_match(&testing::UnitTest t) {
[5]i32 values = [10, 20, 30, 20, 40];
index, found := algorithms::index_of<i32>(values[:], 20);
asserts::is_true(t, found, "index_of finds a present value");
usize expected = 1;
asserts::equal<usize>(
t, &expected, &index, "index_of returns the first match"
);
}
Construída para clareza

Controle direto, apoiado pelas verificações do compilador.

&T
Memória explícita

Referências, fatias, alocação bruta em código inseguro, contratos de propriedade e análise de atribuição definida.

!?
Diagnósticos fortes

Tokenizer, parser, analisador semântico e pipeline de lowering projetados para explicar problemas no código-fonte.

→
Nativa por padrão

Emita LLVM IR, objetos ou executáveis nativos do host. O runtime e a biblioteca padrão acompanham os arquivos de versão.

Escolha um caminho

Da primeira compilação aos detalhes internos.

Comece com um compilador funcional, aprenda a sintaxe central e aprofunde-se nas notas de implementação e na especificação.