Skip to content

Releases: thiagomg/expressa

Versão 0.4.1

Versão 0.4.1 Pre-release
Pre-release

Choose a tag to compare

@thiagomg thiagomg released this 04 Nov 04:37
91a2d71

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 fracao ganha a função compara, 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

Versão 0.4 Pre-release
Pre-release

Choose a tag to compare

@thiagomg thiagomg released this 04 Nov 02:37
38a8712

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

Versão 0.3 Pre-release
Pre-release

Choose a tag to compare

@thiagomg thiagomg released this 27 Oct 06:48

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 / { / fim dentro 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:coluna e o formato 0: nome (arquivo:linha).

Exemplos

  • exemplos/lib/fracao.lep vira biblioteca: nova, soma, simplifica, mdc, mmc, em_texto, em_fracao.
  • exemplos/escola/calc_fracoes.lep soma frações e imprime 1/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

Expressa 0.2.3 Pre-release
Pre-release

Choose a tag to compare

@thiagomg thiagomg released this 21 Oct 06:04

Bugfix:

  • Pontos de parada desaparecem quando se começa a depurar no Windows

0.2.1 - interpretador

0.2.1 - interpretador Pre-release
Pre-release

Choose a tag to compare

@thiagomg thiagomg released this 21 Oct 05:03

Interpretador adicionado ao instalador

Expressa 0.2

Expressa 0.2 Pre-release
Pre-release

Choose a tag to compare

@thiagomg thiagomg released this 19 Oct 05:29

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