Skip to content

feat(stdlib): modulos de IA, matrizes, tensores, banco vetorial e aprimoramentos de runtime - #5

Merged
mat-dgruber merged 4 commits into
mainfrom
feat/stdlib-ia-matematica-e-runtime
Aug 4, 2026
Merged

feat(stdlib): modulos de IA, matrizes, tensores, banco vetorial e aprimoramentos de runtime#5
mat-dgruber merged 4 commits into
mainfrom
feat/stdlib-ia-matematica-e-runtime

Conversation

@mat-dgruber

@mat-dgruber mat-dgruber commented Aug 4, 2026

Copy link
Copy Markdown
Owner

📜 Resumo das Alterações

Esta Pull Request adiciona novos pacotes de alta performance à Standard Library (stdlib) do Harpia, estendendo a linguagem com suporte a Inteligência Artificial, Álgebra Linear, Armazenamento Vetorial e otimizações de compilação web.

🚀 Novas Funcionalidades:

  • Redes Neurais & IA (stdlib/ia): Implementação nativa de Perceptron e redes neurais Multi-Layer Perceptron (MLP) com treinamento e retropropagação em Go.
  • Banco Vetorial em Memória (stdlib/bd/vetores): Indexação de embeddings e busca por similaridade de cosseno ($O(n)$) para consultas semânticas e busca em RAG.
  • Álgebra Linear (stdlib/matriz & stdlib/tensor): Manipulação de matrizes 2D e tensores N-dimensionais para operações matemáticas avançadas.
  • Matemática Expandida (stdlib/matematica): Suporte a trigonometria (Seno, Cosseno, Tangente), logaritmos, exponenciais e funções randômicas.
  • Transpiler Web & Runtime: Aprimoramento na renderização de Virtual DOM, tratamento de sinais reativos e servimento estático no Dev Server (harpia servir).

🧪 Plano de Testes

  • Suíte Global de Testes: Executado go test ./... com 100% dos pacotes aprovados.
  • Testes de Redes Neurais: Validados cenários de treino e inferência em stdlib/ia/redeneural_test.go.
  • Testes de Matrizes e Tensores: Verificadas operações e transformações algébricas em stdlib/matriz/matriz_test.go.
  • Testes do Transpiler: Executado cmd/compilar_test.go e testes do compilador VM sem regressões.

Summary by Sourcery

Extend Harpia’s stdlib and web/runtime with native AI, linear algebra, vector store, and web animation utilities, while enhancing dev tooling, module import behavior, and VM logical operators.

New Features:

  • Introduce high-performance matrix and tensor modules for 2D and N-dimensional numerical operations.
  • Add native AI utilities, including activation functions, normalization, MSE and vector similarity helpers.
  • Provide an in-memory vector store module for embedding storage and cosine-similarity-based semantic search.
  • Expose web animation primitives and an Animado component for spring-style and timeline-based UI transitions.
  • Add a backend vector-store example and new Harpia test scripts for AI and stdlib demos.

Enhancements:

  • Expand the web runtime’s attribute mapping, accessibility support, and details/summary animation behavior.
  • Add browser-like stubs and a native SPA router component to embutidos for safer SSR and routing.
  • Extend Sistema with methods to execute OS commands and Harpia code as subprocesses, plus a quiet CLI mode.
  • Improve math stdlib with trig, exponentials, min/max and random number routines and update docs accordingly.
  • Strengthen import resolution for virtual frontend modules and JSX component invocation behavior.
  • Implement short-circuit compilation and VM execution for logical AND/OR operators.
  • Harden map access and methods against type errors and missing keys, and enrich Texto with contains/prefix/suffix helpers.
  • Enhance web compilation to discover runtime paths robustly, skip style route files, and support more header exports.
  • Generate project structure manifests via Graphify for tooling and analysis.

CI:

  • Integrate Graphify manifests to capture repo state snapshots for tooling and analysis workflows.

Documentation:

  • Substantially expand stdlib README with math, matrix, tensor, AI and vector-store module documentation and usage examples.

Tests:

  • Add VM tests for logical AND/OR short-circuit semantics.
  • Add transpiler tests to validate string escaping and inner-quote handling in generated JS.
  • Add matrix and tensor unit tests validating core algebraic operations.
  • Add IA tests for activation and similarity functions, plus stdlib and SSR integration tests as needed.

Matheus Diniz added 3 commits August 4, 2026 09:31
…rial e matematica expandida

- Adiciona suporte a redes neurais (Perceptron e MLP) e banco vetorial em memoria com busca por cosseno
- Implementa pacotes de álgebra linear (matrizes e tensores N-dimensionais)
- Expande stdlib de matematica com trigonometria, exponenciais e geradores de numeros aleatorios
- Atualiza registros de embutidos e exportacoes da stdlib em portugues
…e vm

- Melhora transpilaçao de componentes JSX, Virtual DOM e sinais reativos no runtime web
- Refina resoluçao de caminhos no dev server (harpia servir) e servidor HTTP
- Ajusta gerenciamento de mapas, imports dinamicos e opcodes na VM Direct-Threaded
- Adiciona suporte a graphify e configuracoes do ambiente de desenvolvimento
…orte a IA

- Sincroniza especificacoes das novas bibliotecas da stdlib (IA, matrizes, tensores)
- Atualiza catalogo de instruçoes e exemplos no manifesto para consumo por LLMs

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sorry @mat-dgruber, your pull request is larger than the review limit of 150000 diff characters

@sourcery-ai

sourcery-ai Bot commented Aug 4, 2026

Copy link
Copy Markdown

Reviewer's Guide

Esta PR estende a stdlib do Harpia com módulos de IA, matrizes, tensores e banco vetorial em memória, além de melhorias no runtime web (animações, SSR/browser stubs, roteador SPA) e no Dev Server/CLI (hot‑reload SSE, execução de comandos/sandbox Harpia) e ajustes na VM/compilador/transpiler para suportar novas construções da linguagem.

Sequence diagram for Dev Server SSE hot-reload flow

sequenceDiagram
  actor Dev
  participant HarpiaDevServer as comandoServir
  participant FileWatcher as watcherProjeto
  participant SSEHandler as handlerHotReload
  participant Browser as EventSource

  Dev->>HarpiaDevServer: comandoServir()
  HarpiaDevServer->>FileWatcher: go watcherProjeto()
  HarpiaDevServer->>SSEHandler: http.Handle("/hot-reload", handlerHotReload)
  Browser->>SSEHandler: GET /hot-reload
  SSEHandler-->>Browser: "data: conectado" (SSE)

  loop monitorar arquivos
    FileWatcher-->>FileWatcher: filepath.Walk()
    FileWatcher-->>HarpiaDevServer: notificarClientes()
    HarlpiaDevServer->>SSEHandler: ch <- true
    SSEHandler-->>Browser: "data: recarregar" (SSE)
    Browser-->>Browser: window.location.reload()
  end
Loading

File-Level Changes

Change Details Files
Ampliação do runtime web com suporte melhorado a atributos SVG/ARIA, polyfills em português, animações tipo anime.js/físicas de mola e componente Animado, além de refinamento de comportamento de detalhes/FAQ e remoção de logs de debug.
  • Mapeia novos atributos SVG/ARIA em mapearAtributo e adiciona fallback para converter camelCase em kebab-case automaticamente.
  • Remove log global de renderização em montar para reduzir ruído em produção.
  • Adiciona helpers globais window.tamanho/texto/inteiro/decimal e métodos em português para String/Array no runtime.
  • Implementa motor de animações (mola, escalonar, animar, linhaTempo) com interpolação customizável e atrasos escalonados.
  • Cria componente Animado que usa IntersectionObserver/hover para animar entrada/visibilidade com will-change, integrando animar.
  • Adiciona animação suave para elementos
    / com ícones de FAQ/sanfona.
stdlib/web/runtime-web.js
cmd/runtime_web_code.go
Refatoração e fortalecimento do Dev Server servir com hot‑reload via SSE compartilhado, watcher mais robusto, suporte a diretório estático e melhorias de cache/control headers.
  • Centraliza lógica de SSE hot‑reload em handlerHotReload reutilizável para modo diretório estático e modo compilação sob demanda.
  • Implementa scriptSSE que reconecta na falha e recarrega a página quando recebe 'recarregar', com controle de ping.
  • Adiciona watcher de diretório estático que ignora .git/node_modules e detecta alterações relevantes (.html/.js/.css/.json) notificando clientes SSE.
  • Ajusta watcher de projeto (modo .hrp) para monitorar o cwd, ignorar dist/Harpia_servir_dist/.git/node_modules e considerar .js/.json além de .hrp/.html/.css.
  • Garante que requisições ao diretório estático sirvam index.html com injeção do script SSE e headers de no‑cache apropriados.
  • Atualiza mensagens de CLI e descrição do comando para refletir hot‑reload automático em ambos os modos.
cmd/servir.go
Introdução de stubs de ambiente de navegador para SSR e implementação de roteador SPA nativo em embutidos, com integração aos módulos virtuais web/sinais/reatividade.
  • Define tipos ObjetoBrowserStub e ObjetoBrowserStubMetodo com implementação de M__obtem_attributo__/M__chame__/M__booleano__ para simular window/document/console/localStorage/JSON/fetch em SSR sem quebrar.
  • Reimplementa roteador embutido como ObjetoRoteador/ObjetoRoteadorApp com métodos definir/navegar/obterRota e resolução de componentes com fallback em mapa ou estrutura similar a mapa.
  • Adiciona aliases de constantes verdade/falso/nulo (Verdadeiro/Falso/Nulo em minúsculas e true/false/null) em constantes globais.
  • Expõe instâncias de roteador, Promise e browser stubs no escopo de embutidos para consumo transparente por módulos virtuais.
  • Altera MaquinarioImporteModulo para dar precedência a módulos virtuais 'web','sinais','reatividade' sobre arquivos locais, populando seus escopos com símbolos apropriados (roteador, sinal, efeito etc.).
stdlib/embutidos/embutidos.go
hrp/importe.go
Expansão do módulo sistema para executar comandos de SO e código Harpia em subprocesso, além de ajustes na CLI executar para modo silencioso e integração com perfil/VM.
  • Adiciona método sistema.executar(comando, [args]) que usa os/exec para rodar binários e retorna mapa {saida, erro} com stdout/stderr capturados.
  • Implementa sistema.executarCodigoHarpia(codigoTexto) que grava código em arquivo temporário e invoca o executável Harpia com comando 'executar --silencioso', retornando stdout/stderr.
  • Atualiza lista de metodos expostos pelo módulo sistema para incluir executar e executarCodigoHarpia.
  • Introduz flag global --silencioso/-s em comandoExecutar para suprimir spinner/cabeçalhos e reutiliza helper executarComSpinner respeitando essa flag.
  • Ajusta descrições de flags da CLI (profilador/assistir) para mensagens mais claras e adiciona atalho -w para --assistir.
stdlib/sistema/sistema.go
cmd/executar.go
Documentação e wiring de novos módulos de matemática, matriz, tensor, ia e banco vetorial vetores na stdlib, com assinatura de funções e exemplos em README.
  • Atualiza README da stdlib para incluir sintaxe de importação tanto com 'importar' quanto 'de "modulo" importe ...'.
  • Documenta funções adicionais em matematica (exp, log, sen, cos, tanh, max, min, aleatorio) e descreve assinatura/semântica.
  • Adiciona seções de README para módulos matriz, ia, tensor e vetores, com tabelas de funções (produtoEscalar, sigmoide, softmax, Tensor.criar etc.) e exemplos de uso em Harpia.
  • Garante o registro de novos módulos na stdlib (bd, bd/vetores, matriz, tensor) via imports em stdlib/stdlib.go.
  • Inclui arquivos de teste Harpia teste_ia.hrp e teste_novos_modulos.hrp (apenas adicionados no repo).
stdlib/README.md
stdlib/stdlib.go
teste_ia.hrp
teste_novos_modulos.hrp
Extensões de texto e mapa no runtime (métodos contem/comecaCom/terminaCom/chaves/valores) e mudança de semântica de Mapa.M__obtem_item__ para retornar Nulo em vez de erro quando chave não existe.
  • Modifica Mapa.M__obtem_item__ para retornar hrp.Nulo em caso de ausência de chave, removendo lançamento de erro ChaveErro.
  • Adiciona método texto.contem(subtexto) que delega para M__contem__ e garante verificação de número de argumentos.
  • Introduz métodos comecaCom/comeca_com e terminaCom/termina_com em TipoTexto, com validação de tipo Texto e implementação baseada em strings.HasPrefix/suffix.
  • Fortalece métodos estáticos de TipoMapa (chaves/valores) adicionando checagem de tipo e mensagens de erro de TipagemErro amigáveis.
  • Ajusta NewTexto para suportar objetos que expõem texto sem assumir que implementam diretamente I__chame__ (faz type assertion).
hrp/mapa.go
hrp/texto.go
Melhorias na VM/compilador e interpretador para operadores lógicos com curto‑circuito, JSX com componentes sem argumentos e testes de VM cobrindo esses novos casos.
  • Especializa compilação de operador binário 'e' para gerar bytecode com OP_DUP/OP_JMP_FALSO e curto‑circuito antes de avaliar o lado direito.
  • Especializa compilação de operador binário 'ou' para gerar fluxo com OP_DUP/OP_JMP_FALSO e OP_JMP para evitar avaliação desnecessária do lado direito quando o esquerdo é truthy.
  • Altera visita de JSX em interpretador para chamar componentes sem props quando função tem lista de argumentos vazia, evitando passar mapa vazio indevido.
  • Adiciona casos de teste na VM para verificar comportamento de curto‑circuito de 'e' e 'ou' com Verdadeiro/Falso e operandos não‑booleanos.
  • Mantém comportamento existente para outros operadores binários através da rota emitirOpBinaria padrão.
vm/compilador.go
hrp/interpretador.go
vm/vm_test.go
Correções e robustez no transpiler web para strings com quebras de linha e aspas duplas internas, com novos testes cobrindo escapes.
  • Atualiza transpiler_web.Transpile para literais de string: escapa
/
/
como \n/\r e processa aspas duplas não‑escapadas, adicionando barras invertidas quando necessário para evitar SyntaxError.
  • Remove escape global de \ para evitar duplicação indevida de backslashes.
  • Amplia conjunto de símbolos considerados parte do header web (Animado/mola/escalonar/animar/linhaTempo) para não gerar imports duplicados.
  • Adiciona testes em compilar_test.go que validam geração correta de JS para strings com
  • e para strings Harpia com aspas duplas internas.
  • Inclui novas funções no import header gerado para web (Animado, mola, escalonar, animar, linhaTempo).
  • cmd/transpiler_web.go
    cmd/compilar.go
    cmd/compilar_test.go
    Atualizações diversas em stdlib e tooling: modulo sistema para playground, integração de banco vetorial, ajustes em SSR http, e estabilização de manifest de graphify.
    • Atualiza stdlib/sistema para ser usado pelo playground (executarCodigoHarpia) e por outros fluxos internos.
    • Modifica ServirAppHandler em stdlib/http/ssr.go para passar req.Caminho ao componente raiz e ter fallback para chamada sem args, melhorando roteamento SSR.
    • Registra módulos bd, bd/vetores, matriz e tensor em stdlib/stdlib.go para carregamento automático.
    • Adiciona arquivos de manifest e relatórios de graphify-out para análise de dependências; sem impacto direto em runtime Harpia.
    • Ajusta docs e metadados em arquivos auxiliares (llms.txt/llms-full.txt, .gitattributes).
    stdlib/sistema/sistema.go
    stdlib/http/ssr.go
    stdlib/stdlib.go
    graphify-out/manifest.json
    graphify-out/GRAPH_REPORT.md
    graphify-out/2026-08-03/manifest.json
    graphify-out/2026-08-03/GRAPH_REPORT.md
    graphify-out/2026-08-04/manifest.json
    graphify-out/2026-08-04/GRAPH_REPORT.md
    .gitattributes
    llms.txt
    llms-full.txt

    Tips and commands

    Interacting with Sourcery

    • Trigger a new review: Comment @sourcery-ai review on the pull request.
    • Continue discussions: Reply directly to Sourcery's review comments.
    • Generate a GitHub issue from a review comment: Ask Sourcery to create an
      issue from a review comment by replying to it. You can also reply to a
      review comment with @sourcery-ai issue to create an issue from it.
    • Generate a pull request title: Write @sourcery-ai anywhere in the pull
      request title to generate a title at any time. You can also comment
      @sourcery-ai title on the pull request to (re-)generate the title at any time.
    • Generate a pull request summary: Write @sourcery-ai summary anywhere in
      the pull request body to generate a PR summary at any time exactly where you
      want it. You can also comment @sourcery-ai summary on the pull request to
      (re-)generate the summary at any time.
    • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
      request to (re-)generate the reviewer's guide at any time.
    • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
      pull request to resolve all Sourcery comments. Useful if you've already
      addressed all the comments and don't want to see them anymore.
    • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
      request to dismiss all existing Sourcery reviews. Especially useful if you
      want to start fresh with a new review - don't forget to comment
      @sourcery-ai review to trigger a new review!

    Customizing Your Experience

    Access your dashboard to:

    • Enable or disable review features such as the Sourcery-generated pull request
      summary, the reviewer's guide, and others.
    • Change the review language.
    • Add, remove or edit custom review instructions.
    • Adjust other review settings.

    Getting Help

    Ajusta o alinhamento e formatacao de codigo Go em todos os pacotes do projeto
    para conformidade com as regras do linter e CI do repositório.
    @mat-dgruber
    mat-dgruber merged commit 79fd9d3 into main Aug 4, 2026
    9 of 10 checks passed
    Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

    Labels

    None yet

    Projects

    None yet

    Development

    Successfully merging this pull request may close these issues.

    1 participant