Repository navigation
Releases: thiagomg/expressa
Release list
Versão 0.4.1
Expressa 0.4.1
Esta versão melhora a fluidez da IDE Aula, simplifica o fluxo de depuração e amplia os exemplos de frações.
IDE mais responsiva
- Operações de arquivos locais e remotos passam a ocorrer em segundo plano, permitindo continuar editando enquanto a IDE abre, salva ou restaura arquivos.
- A análise de sintaxe também acontece em segundo plano. Resultados antigos são descartados quando o documento muda.
- Salvar enquanto você continua digitando preserva as novas alterações como não salvas.
- Resultados de operações anteriores não substituem documentos de outro projeto após uma troca de projeto.
- O indicador Operações mostra tarefas em andamento e permite cancelar leituras, conexões e a preparação de execuções.
- Melhorias na recuperação de documentos e no encerramento de tarefas ao fechar abas ou a IDE.
- O servidor processa operações de arquivos com concorrência limitada, e leituras e listagens passam a ter limites de tamanho e quantidade.
Depuração
- F5 continua uma execução pausada em um breakpoint, inclusive na aba somente leitura. Fora de uma execução em andamento, mantém sua função de executar o programa; F6 inicia a depuração.
- Parar fecha imediatamente a aba de código executado e retorna ao editor, sem esperar a confirmação do interpretador.
- A aba temporária também fecha ao término da execução. Se outra aba de edição já estiver selecionada, ela permanece selecionada.
- Pausas que chegam após Parar não reabrem a aba de depuração.
- Erros de uma execução normal com F5 aparecem no console e apontam para o código editável, sem abrir automaticamente uma aba somente leitura.
- Se o código foi alterado durante a execução, a IDE preserva o cursor e avisa que a posição do erro pertence à versão anterior.
- Ver → Ver código executado permite consultar manualmente a versão usada na execução.
Frações e exemplos
- A biblioteca de exemplo
fracaoganha a funçãocompara, para comparar duas frações. - Frações criadas pela biblioteca passam a ter representação textual automática ao serem exibidas.
- Novo exemplo
exemplos/escola/compara_fracoes.lep, com comparações entre frações maiores, menores e equivalentes. - O exemplo de soma de frações recebe um caso adicional.
Documentação
- Manual, guia da Aula e lista de atalhos atualizados para refletir o comportamento de execução e depuração.
Versão 0.4
Linguagem
Mudança incompatível: Índices começam em 0
Listas, textos, matrizes, argumentos, formate ({0}) e bloco passam a contar a partir de 0
Nomes no imperativo
| Antes | Agora |
|---|---|
| procurar | procure |
| avaliar | avalie |
| plotar | plote |
| sair | saia |
| escala | redimensione |
No REPL, a linha sair (sem parênteses) continua saindo do interpretador. saia() encerra o processo.
Arquivos, datas e outros programas
importe "arquivo" ganha existe, eh_pasta, liste, crie_pasta, apague_arquivo, apague_pasta, mova, copie, junte_caminho, nome_do_arquivo, pasta_de, extensao e pasta_atual. Na Aula, esses caminhos ficam na pasta do projeto.
No núcleo: ambiente, ordene, comeca_com, termina_com, agora e formate_data. No Windows, agora() vem em UTC.
importe "processo" traz execute e linhas_de, para rodar outros programas na linha de comando. Na Aula, esse módulo é erro.
Matrizes e tela gráfica
xy(A, x, y) lê A[y, x]. Com um valor, altera a célula e devolve a mesma matriz.
Na tela gráfica: retangulo, fundo (inclusive :transparente) e como_imagem. imagem também aceita outra tela. apague mantém a cor de fundo.
Funções locais e o desenho deixam de reter memória que não era liberada.
Expressa Aula
• Projetos locais e remotos ficam em menus separados. Ao reabrir o projeto, voltam as abas, a linha de cada uma e os pontos de parada.
• Busca no projeto (Ctrl+Shift+F), abrir arquivo (Ctrl+P), funções do arquivo (Ctrl+Shift+O) e lista de atalhos (Ctrl+?).
• Ctrl+Tab e Alt+1…9 trocam de aba. O botão do meio fecha; Ctrl+Shift+T reabre a última. ()[]{}"" fecham sozinhos, e o editor marca as outras ocorrências do nome sob o cursor.
• O REPL fica no painel de baixo, com histórico, várias linhas, Parar e Reiniciar. Impressão contínua não trava a janela.
• Durante a depuração, a fonte em execução é só leitura. Editar não muda o programa que já está rodando.
• Gravação com revisão: se o arquivo mudou fora do editor, a aba oferece Comparar, Recarregar, Salvar como ou Substituir, e o texto digitado permanece.
• A cada 5 s o editor guarda uma cópia do que ainda não foi salvo. Se ele fechar de repente, dá para recuperar.
• Arquivos criados pela execução voltam ao projeto. No servidor, Arquivo → Sincronização… mostra o que ainda não foi enviado.
• Editor e servidor precisam ser atualizados juntos.
Versão 0.3
Linguagem
:_como_texto em mapas
Se o mapa tiver o campo :_como_texto (função de um argumento que devolve texto), escreva, escreva_erro, formate, junte e o + com texto usam essa função. Sem o campo, o mapa continua mapa{…}.
como_texto = funcao(fr) { formate("{}/{}", fr:numerador, fr:denominador) }
fr = mapa([:numerador -> 1, :denominador -> 4])
fr:_como_texto = como_texto
escreva(fr) // 1/4
escreva("x" + fr) // x1/4
Se :_como_texto formatar o mesmo mapa de novo, ou não devolver texto, o programa falha com erro claro.
Pilha de chamadas (stack trace)
erro: divisão por zero em app.lep:2:5
pilha de chamadas:
0: boom (app.lep:2:5)
1: <modulo> (app.lep:4:1)
Expressa Aula
Bugs variados corrigidos, dentre eles:
- Copiar e colar entre janelas da Aula cola o texto inteiro. Antes o recuo elétrico no meio do colar cortava o trecho (por exemplo em
mdc). - Recuo:
inicio/{/fimdentro de string ou comentário não abrem bloco (escreva("início: …")deixa de recuar o resto do arquivo). - Destaque: palavras com acento (
função,não,até,senão,início,contém) aparecem como palavra-chave. - Assinatura (tooltip): Escape esconde e só volta quando o cursor sai da chamada.
- Erro: a saída mostra a pilha; clique no quadro vai à linha. O painel Pilha preenche no erro; duplo clique também salta. Aceita
arquivo:linha:colunae o formato0: nome (arquivo:linha).
Exemplos
exemplos/lib/fracao.lepvira biblioteca:nova,soma,simplifica,mdc,mmc,em_texto,em_fracao.exemplos/escola/calc_fracoes.lepsoma frações e imprime1/4 + 1/4 = 1/2.
Compatibilidade
Programas da 0.2.3 continuam válidos. Mapas passam a ter texto customizado só se o aluno definir :_como_texto.
Bugs conhecidos
- A janela de ajuda não fecha normalmente quando aberta pela segunda vez
Expressa 0.2.3
Bugfix:
- Pontos de parada desaparecem quando se começa a depurar no Windows
0.2.1 - interpretador
Interpretador adicionado ao instalador
Expressa 0.2
Linguagem em português para aprender a programar. Arquivos .lep, índices a partir de 1, um único tipo numérico (conta de caderno: 0.1 + 0.2 é 0.3).
Nesta versão
- Interpretador, REPL com introspecção (ajuda, ls, tipo) e depurador de linha de comando
- Módulos tela, mat, matriz, arquivo e cartesiano, sem precisar de biblioteca extra
- Expressa Aula (IDE)
- Gráficos (cartesiano)
- Tutorial, manual, folha de consulta e exemplos (linguagem, texto, programas, escola, unix, jogos)
- Extensão do VS Code e modo do Emacs (Eu escrevi a maioria do conteúdo no Emacs!)
Observação:
Na primeira abertura, os exemplos são copiados para:
- Windows:
~\Documentos\Expressa Aula\exemplos - Linux:
~/Documentos/Expressa Aula/exemplos