- Postagens: 1
- Obrigados Recebidos: 2
Discussões sobre a linguagem COBOL e suas melhores práticas.
PowerRustCOBOL AI RC3
3 dias 9 horas atrás - 3 dias 9 horas atrás #130
por eslopes
PowerRustCOBOL AI RC3 foi criado por eslopes
================================================
PowerRustCOBOL AI - Release Candidate disponível para download e teste
================================================
Um ambiente RAD moderno para COBOL, escrito em Rust, com uma malhax de agentes de
IA integrada. Open source, licença Apache 2.0.
Olá, meu nome é Emerson, sou o principal arquiteto da solução PowerRustCOBOL AI,
uma solução desenhada para trazer o desenvolvedor COBOL, isto é, você, para a
realidade do desenvolvimento atual com IA, tanto em termos do ambiente de
desenvolvimento quanto das aplicações escritas com o mesmo.
Hoje estamos liberando o terceiro Release Candidate, disponível para quem quiser
baixar, instalar e testar sem custos visando a liberação da primeira versão
produtiva em cerca de duas semanas.
github.com/CloudLandBeta/PowerRustCOBOL/...ses/tag/v1.61.185RC3
Antes de tudo: o que "Release Candidate" significa aqui
=======================================================
- O conjunto de funcionalidades está fechado. O que você vê neste RC é o que
entra na primeira versão de produção.
- O que ainda falta ser implementado? Falta o uso real, em máquinas reais, com
aplicações reais - a única coisa que nenhuma suíte de testes substitui. É
exatamente para isso que a RC existe e é exatamente por isso que estamos
chamando você.
- Bugs são esperados. Reporte os problemas encontrados na página do projeto no
GitHub de forma clara, com indicação do componente, estrutura da linguagem ou
configuração que falhou. Evite textos do tipo "o botão não funciona", dando
preferência a uma descrição mais objetiva "O evento onClick de um Button-1 não
está funcionando". Dê preferência ao inglês (use o Google Translate se
necessário). github.com/CloudLandBeta/PowerRustCOBOL/issues
O que é o PowerRustCOBOL AI
===========================
Três componentes, três papéis:
+
+
+
| Nome | O que é
+
+
| RustCOBOL | A linguagem - um dialeto COBOL-85
| | com extensões COBOL-2002, COBOL-2014
| | e COBOL-2023.
+
+
| PRC AI | O IDE de desktop: contém o designer
| | visual de formulários, editor,
| | depurador e os agentes de IA.
+
+
| rcrun | O runtime e compilador CLI.
+
+
A ideia é simples de enunciar e trabalhosa de cumprir: um COBOL que você usa
para criar e distribuir aplicações modernas, multiplataforma, sem runtime
proprietário para instalar na máquina do cliente, sem dependência de fornecedor,
e sem abrir mão de escrever COBOL de verdade. Um cuidado especial foi tomado
para não adicionar sintaxe que não é própria do COBOL, embora algumas liberdades
tenham sido tomadas para diminuir consideravelmente a verbosidade da linguagem.
A IDE
=====
- Designer visual de formulários com canvas completo, snap de grade,
redimensionamento de controles e do próprio formulário por arrasto,
alinhamento multi-seleção e ordenação de profundidade (z-order).
- 42 controles distribuídos em Comuns, Contêineres, Dados, Gráficos, Menu,
Não-visuais e Gráficos estatísticos. Entre eles: Animator (renderiza GIF /
WebP / APNG nativamente), Knob (dial rotativo com preenchimento bipolar),
Gauge (KPI radial / linear / donut com zonas automáticas de alerta e crítico),
Switch, FileDropZone (arrastar-e-soltar ou seletor nativo), Maps
(OpenStreetMap embutido, com pan e zoom), WebSearch, TreeView, DataGrid,
Splitter, SideMenu e os seis tipos de gráfico.
- Motor de renderização unificado: o que você vê no designer é pixel a pixel o
que aparece no preview, no formulário em execução e no binário compilado.
- Raio de canto universal e recorte arredondado: contêineres têm CornerRadius
configurável e os filhos recortam corretamente contra a borda arredondada do
pai.
- Transparência em todo controle (Transparency, 0 a 100), com uma regra de
legibilidade embutida: uma legenda que ficaria abaixo do contraste WCAG AA
contra o que estiver atrás é automaticamente invertida para o polo que lê.
- 32 temas de IDE (Dark Glass, Dracula, Nord, Tokyo Night, Solarized, GitHub,
Catppuccin, Neumórficos e outros) e estilos de formulário (Classic, Enhanced,
Neumorphic Light/Dark) aplicados com uma única propriedade no formulário - não
controle a controle.
- Editor visual de menus com árvore hierárquica, catálogo de ícones vetoriais
embutido e assinaturas de integridade HMAC na configuração.
- Data binding e arrays de controles: ligação direta a fontes SQL e Visual
Repeating Groups, que expandem um GroupBox ou Panel automaticamente conforme a
quantidade de linhas retornada em tempo de execução.
- Depurador de formulários (RAD debugging): janela própria, sempre no topo, com
breakpoints, step In/Out/Over, inspetor visual de variáveis e execução animada
de 1 a 10 linhas por segundo - dá para assistir o handler rodando.
- Validação visual e inspetor de formulário: selos de erro em tempo real para
handlers malformados, ligações incompletas e anomalias de layout; e um gerente
de processos rcrun que mostra CPU%, memória RSS, logs e threads ao vivo, de
dentro do IDE.
- Application shell: uma aplicação corporativa não precisa virar dezenas de
janelas soltas. Um formulário principal com menu lateral abre um shell de
janela única - painel de menu, trilha de navegação (breadcrumb) e painel de
conteúdo - no qual os formulários são carregados dentro do painel. O receptor
super permite que um formulário se dirija a quem o carregou, como já se dirige
a si mesmo com me.
- Ciclo de vida de formulários: todo projeto designa um formulário principal, e
só ele inicia a aplicação - uma tela de login não pode ser pulada. Efeitos de
entrada e saída de janela são configurados uma vez por projeto.
- Interface em 6 idiomas: português, inglês, espanhol, francês, japonês e
chinês.
- Diálogos nativos de arquivo não bloqueantes - o loop de eventos nunca congela.
A linguagem RustCOBOL
=====================
COBOL-85 com extensões OO limitadas
Fonte em formato livre. As quatro divisions. WORKING-STORAGE, LOCAL-STORAGE,
LINKAGE e FILE SECTION. PIC X/A/9/S/V com repetição, USAGE DISPLAY / COMP /
BINARY / COMP-1 / COMP-2 / COMP-3 / PACKED-DECIMAL / COMP-5 / INDEX / POINTER,
OCCURS (fixo e DEPENDING ON), níveis 01/77/88, VALUE, itens de grupo, FILLER.
Verbos implementados:
MOVE, DISPLAY, ACCEPT, ADD/SUBTRACT/MULTIPLY/DIVIDE /COMPUTE com múltiplos
receptores e ROUNDED por receptor, IF, EVALUATE (com ALSO e WHEN NOT), PERFORM
em todas as formas (inline, TIMES, UNTIL com TEST BEFORE/AFTER, VARYING...AFTER,
THRU), GO TO [DEPENDING ON], SET (inclusive UP/DOWN BY e 88 TO TRUE), INITIALIZE
com REPLACING, STRING/ UNSTRING com ON OVERFLOW, INSPECT (TALLYING/REPLACING
combinados, BEFORE/AFTER INITIAL, CONVERTING), SEARCH/SEARCH ALL,
SORT/MERGE/RELEASE/RETURN, ALTER, UNLOCK, CANCEL, COMMIT, ROLLBACK, NEXT
SENTENCE fiel, ponteiros (SET ADDRESS OF), 66 RENAMES, condition-names 88 reais,
modificação de referência item(início:tamanho) em leitura e escrita, condições
abreviadas nas duas formas, programas aninhados e múltiplas unidades de programa
por arquivo, CALL ... USING BY REFERENCE/CONTENT/VALUE ... RETURNING ... ON
EXCEPTION, e COPY/REPLACE com expansão recursiva de copybooks.
Os terminadores de escopo são aceitos - END-IF, END-EVALUATE, END-PERFORM,
END-READ, END-WRITE, END-REWRITE, END-DELETE, END-START, END-SEARCH, END-STRING,
END-UNSTRING, END-ADD, END-SUBTRACT, END-MULTIPLY, END-DIVIDE, END-COMPUTE,
END-CALL, END-RETURN, mais END-ACCEPT e END-DISPLAY. Todos são opcionais, porque
o ponto fecha a instrução do mesmo jeito, mas quem tem o hábito de fechar cada
verbo explicitamente pode continuar escrevendo assim: o código é aceito como
está, sem adaptação.
O conjunto completo de funções intrínsecas do padrão COBOL-85 está implementado
- de LENGTH e NUMVAL-C a ANNUITY, PRESENT-VALUE, STANDARD-DEVIATION,
INTEGER-OF-DATE e TEST-NUMVAL.
O suporte OO é limitado de propósito ao CONSUMO de objetos, não à definição
deles. O que existe:
- o parágrafo REPOSITORY, que dá nome às classes externas que o programa usa;
- itens declarados USAGE OBJECT REFERENCE <tipo>;
- o verbo INVOKE, na forma clássica INVOKE objeto "método" USING ... RETURNING
... e na forma INVOKE objeto::"método"(args);
- o invoke inline, objeto::método(params), dentro de uma expressão.
Escrever suas próprias CLASS e METHOD continua fora de escopo.
Aritmética exata
ADD, SUBTRACT, MULTIPLY, DIVIDE e COMPUTE executam sobre uma mantissa inteira de
128 bits, sem passar por f64 em momento algum.
Resultado: 18 dígitos padrão e 31 dígitos estendidos permanecem exatos, ROUNDED
arredonda meio-para-longe-do-zero como manda o padrão, e ON SIZE ERROR é
honrado. Literais decimais são carregados exatamente desde o lexer.
Se você já perdeu um centavo em conversão de ponto flutuante, sabe por que este
parágrafo existe.
PICTUREs numéricas editadas
O motor de edição aplica supressão de zeros Z, proteção *, $ fixo e flutuante,
sinais +/- fixos e flutuantes, inserção de , . B 0 / e CR/DB - em MOVE e
DISPLAY. PIC ZZZ,ZZ9.99, $$$,$$9.99, 9(6).99CR funcionam como você espera.
As extensões: onde o RustCOBOL vai além
=======================================
Inferência de tipos
O operador :: elimina variáveis temporárias de working-storage:
Ao invés de:
WORKING-STORAGE SECTION.
01 ACUMULADORES.
05 INPUT1 PIC 9(09) COMP-5.
05 INPUT2 PIC 9(09) COMP-5.
05 OUTPUT1 PIC 9(09) COMP-5.
...
MOVE Input-1::Value TO INPUT1
MOVE Input-2::Value TO INPUT2
COMPUTE OUTPUT1 = INPUT-1 * INPUT2
MOVE OUTPUT1 TO Output::Value
Você escreve uma única linha:
COMPUTE Output::Value = Input-1::Value * Input-2::Value
Outra adição feita é o suporte a cadeias de retorno de objetos:
DISPLAY GRID-1::ROWS(1)::COLUMNS(2)::Value
Por questões de compatibilidade também é suportada a sintaxe herdada "Property"
OF Control.
EXEC RUST - Rust real compilado dentro do seu programa
Blocos EXEC RUST ... END-EXEC não são interpretados por um micro-interpretador
Rust: eles são compilados pelo rustc durante a compilação do COBOL e ligados ao
binário do seu programa. O usuário final não precisa de toolchain Rust nenhum.
Itens de dados declarados USAGE OBJECT REFERENCE RUST-<tipo> atravessam para
dentro do bloco como referências Rust tipadas de verdade.
Project's Crates - o ecossistema Rust ao alcance do COBOL
Uma categoria própria na árvore do projeto permite buscar no registro de crates
(tabela paginada com crate, versão, downloads e descrição), fixar a versão e
usar a biblioteca a partir dos seus blocos EXEC RUST. Na prática: décadas de
bibliotecas modernas disponíveis para um programa COBOL, sem FFI escrita à mão.
STORAGE IS MEMORY | DISK [WITH COMPRESSION]
Uma cláusula de SELECT que escolhe o motor de arquivo indexado por arquivo:
SELECT CUSTOMER-FILE
STORAGE IS DISK WITH COMPRESSION
ASSIGN TO "customers.dat"
ORGANIZATION IS INDEXED
ACCESS MODE IS DYNAMIC
RECORD KEY IS CUSTOMER-ID
ALTERNATE RECORD KEY IS CUSTOMER-ZIP WITH DUPLICATES
FILE STATUS IS CUSTOMER-STATUS.
DISK (o padrão) é uma B+tree paginada persistente: registros lidos sob demanda,
RAM limitada mesmo em arquivos enormes. MEMORY mantém tudo em memória e grava ao
fechar. WITH COMPRESSION é um RLE rápido e sem dependências que costuma cortar
bem mais de 50% dos registros COBOL típicos, cheios de espaços.
OPEN ... WITH REGISTERED USER
Registra o operador responsável pela sessão de arquivo. COBOL não tem motor de
autenticação, e esta extensão não inventa um - ela é observacional: o usuário
passa a aparecer em cada evento do log de transações do arquivo. Auditoria, não
autorização.
User Procedures e handlers de evento
Procedimentos COBOL compartilhados, editáveis no IDE e chamáveis dos handlers
com CALL "PROCEDURE-NAME". Cada evento de controle é um programa COBOL aninhado
- um modelo que quem vem do PowerCOBOL reconhece de imediato.
Arquivos indexados: um recurso de primeira classe
=================================================
Os verbos de arquivo (OPEN/CLOSE/READ/WRITE/REWRITE/DELETE/START) são
despachados pela ORGANIZATION declarada em cada SELECT - SEQUENTIAL, LINE
SEQUENTIAL e INDEXED compartilham os verbos e cada uma mantém sua semântica.
O motor ISAM é próprio e sem dependências externas:
- RECORD KEY primária e ALTERNATE RECORD KEY [WITH DUPLICATES], ordem ascendente
em disco.
- ACCESS MODE SEQUENTIAL / RANDOM / DYNAMIC, READ ... NEXT/PREVIOUS, START ...
KEY IS = / > / >= / < / <=, cláusulas INVALID KEY / NOT INVALID KEY e FILE
STATUS completos.
- Transações controladas pelo programa: COMMIT e ROLLBACK com log de
desfazimento real - a facilidade opcional de commit e rollback que a ISO/IEC
1989:2023 acrescentou ao padrão COBOL.
- Quatro motores selecionáveis (rcrun --indexed-engine ou variável de ambiente),
todos com comportamento COBOL idêntico. Entre eles o motor redb, ACID e
resistente a queda de energia: OPEN em O(1) (cerca de 5 ms com 200 mil
registros, sem varredura de recuperação), RAM proporcional ao conjunto de
trabalho, e COMMIT/ROLLBACK que sobrevivem a um corte de energia sem corromper
índice.
- Container PRCIDX1 autodescritivo: o arquivo carrega o próprio esquema (formato
do registro e descritores de chave), com validação estrita na abertura -
incompatibilidade de esquema vira FILE STATUS 39, arquivo ausente vira 35.
- Observabilidade: log de transações por arquivo com carimbo de tempo, contagem
de registros e bytes, duração, throughput e qualidade de ordenação de chaves -
em logfmt ou NDJSON pronto para Grafana/Loki.
Integrações prontas
===================
- SQL - SQLite, PostgreSQL e MySQL sob uma única superfície de CALL
(COBOL-OPEN-DB, COBOL-EXEC-SQL, COBOL-FETCH-ROW, COBOL-NEXT-ROW,
COBOL-ROW-COUNT, COBOL-CLOSE-DB ). O backend é escolhido pela string de
conexão. Todos os drivers são Rust puro: nada de libpq, ODBC ou OpenSSL de
sistema para instalar.
- HTTP / REST - GET, POST, PUT, DELETE com cabeçalhos personalizados.
- Gráficos - seis tipos (barras, linhas, pizza, área, dispersão, donut) ligados
diretamente a tabelas COBOL.
- Maps e WebSearch - mapa navegável embutido com dados de localização, e cliente
de busca na web, ambos com ciclo de vida assíncrono.
- Timers e o objeto AgentObject, que conecta um formulário a um LLM.
A parte "AI" do nome
====================
O IDE traz uma malha de agentes que trabalham em conjunto cuidando da automação
do desenvolvimento, escrevendo código COBOL, inserindo controles num formulário,
configurando respostas para os eventos e muito mais. Os agentes trabalham de
forma coordenada por um agente central.
- Grace, a orquestradora. Ela decompõe o pedido em tarefas e roteia cada uma
para o especialista que a domina (Form Designer, COBOL Event Handler,
Data/Indexed File, Documentação, Controle de Versão). Antes de qualquer
recuperação de contexto ela avalia a clareza do pedido e pergunta em vez de
adivinhar. Mantém notas de desempenho por agente entre execuções e devolve aos
especialistas lições, não pontuações. Perguntas investigativas sobre o projeto
aberto são respondidas a partir do estado real do projeto, não de memória.
- Revisor Pedantic opcional, um para um. Para que não se confie de forma cega
nos agentes, o resultado gerado por cada um deles pode passar por um revisor
independente, que analisa se o trabalho realizado está de acordo com a tarefa
especificada. Revisores são pedantes por natureza, sempre olhando com
desconfiança o trabalho feito até que se comprove que está de acordo com o
pedido do usuário. Obs: Use revisores pedantes com modelos LLM mais simples. O
consumo de tokens é alto quando um revisor pedante é ativado, podendo consumir
rapidamente sua franquia de tokens quando se utiliza um modelo na nuvem.
- Um padrão de código COBOL que os agentes seguem - dados da aplicação em
registros 01 ... GLOBAL significativos, tabelas OCCURS em vez de campos
repetidos, buffers numéricos editados reaproveitados, inicialização de valores
em uma INITIALIZE-... SECTION dedicada, MAIN SECTION que apenas orquestra, e
inicialização de dados no onLoad do formulário, nunca no handler de um
controle. Nunca fazer uso de GO TO. O revisor cobra o mesmo padrão, então a
dupla não pode discordar.
- 17 provedores de LLM: OpenAI, Anthropic, Google Gemini, Mistral, Cohere, Groq,
DeepSeek, xAI, Perplexity, OpenRouter, HuggingFace, Together AI, Voyage AI,
Alibaba Model Studio e Ollama Cloud - e, para quem não quer nada saindo da
máquina, Ollama local e Llamafile.
- Base de conhecimento com RAG por assunto: a documentação de referência é
indexada um registro por assunto, não por arquivo, de modo que a busca devolve
o parágrafo que responde à pergunta. O IDE já vem com a base pré-embutida; os
embeddings rodam na GPU, com fallback de CPU, sob uma única política, e há
reindexação sob demanda.
- Observabilidade do próprio agente: log de atividade com duração, status HTTP e
contagem de tokens, e o indicador "Thinking..." com leitura ao vivo de
entrada/saída.
O ponto que queremos deixar claro: a IA é opcional. O IDE, o compilador e o
runtime funcionam com ou sem agentes (mas quem vai querer desenvolver sem IA
hoje em dia?).
Compilar e distribuir
=====================
rcrun build serializa a AST do programa, comprime, embute tudo - inclusive os
formulários - e produz um único binário nativo, com o LICENSE, o NOTICE e o
aviso de redistribuição ao lado.
- Nenhum arquivo .cbl viaja dentro do executável.
- Nenhum runtime para instalar na máquina do cliente.
- Um programa de console isolado nem precisa de manifesto: rcrun build hello.cbl
basta.
- Também há rcrun run (executar), rcrun check (análise sintática e semântica sem
executar) e rcrun package (empacotar o projeto para distribuição).
Em desenvolvimento: conversor Fujitsu PowerCOBOL -> PowerRustCOBOL AI
================================================
Está em desenvolvimento um conversor de projetos Fujitsu PowerCOBOL para o
PowerRustCOBOL AI, para encurtar o caminho de quem tem uma base construída
naquele ambiente. Ele ainda não faz parte desta RC - anunciaremos aqui assim que
estiver disponível para uso.
Uma nota de honestidade desde já, para não gerar expectativa errada: a conversão
trata dos conceitos - formulários, controles, propriedades, handlers de evento e
a estrutura do projeto. Não há, e não haverá, compatibilidade binária de
arquivos ISAM nem de executáveis com produtos de terceiros. Os conceitos migram;
os artefatos, não.
Em desenvolvimento: Compilador WebASM (seus formulários na Web)
============================================
Todo o projeto foi concebido para ser multiplataforma, começando com aplicações
desktop, mas em breve teremos Web, Android, iOS, WatchOS, tablets e outras
possibilidades.
Em desenvolvimento: Gerador de relatórios visual
===============================
Uma parte importante foi colocada em segundo plano por um motivo simples,
imprime-se cada vez menos, com consumo de conteúdo via browser e controles como
Datagrid e gráficos para análises que permitem um consumo de informação mais
imediato. Mesmo assim, um sofisticado ambiente de desenvolvimento de relatórios
será disponibilizado em futuras versões, com funcionalidades inéditas, incluindo
suporte SQL em arquivos ISAM (além de DB tradicionais).
O que ainda não está pronto
===========================
- Organização RELATIVE de arquivos: planejada, ainda não implementada.
- Travamento de registros entre processos: os verbos OPEN ... SHARING/WITH LOCK,
READ ... WITH [NO] LOCK e UNLOCK são analisados e acionam os locks do motor
indexado, mas dentro de uma única execução - não há coordenação entre
processos distintos do sistema operacional.
- COBOL OO completo: definir suas próprias CLASS e METHOD está fora de escopo. O
consumo de objetos existe e está descrito em "COBOL-85 com extensões OO
limitadas" - REPOSITORY, USAGE OBJECT REFERENCE, INVOKE e o invoke inline.
- WebAssembly e mobile (Android/iOS): em desenvolvimento, fora desta RC - veja
"Em desenvolvimento: Compilador WebASM" acima.
- Fora de escopo por decisão de projeto, para sempre: COMMUNICATION SECTION,
REPORT WRITER SECTION e controles ActiveX/OLE/COM.
- A documentação traduzida está atrás do inglês. O guia do desenvolvedor
completo hoje está em inglês; as traduções estão sendo atualizadas. A
interface do IDE, essa sim, está completa nos 6 idiomas.
- Suporte à nuvem. Controles para integração com nuvem (inicialmente AWS) já
estão planejados, mas ainda não estão implementados. Após o release da versão
2.0.0 que marcará a primeira versão estável para produção, teremos uma versão
2.1.x com integração a diversos serviços na nuvem.
Open source - e construído com IA, sem que isso o torne menos sério
===================================================
O PowerRustCOBOL AI é software livre sob licença Apache 2.0. E sim: foi
desenvolvido com auxílio intenso de inteligência artificial. Achamos que isso
deve ser dito claramente, e não escondido - mas também achamos que a pergunta
certa não é "foi feito com IA?" e sim "foi feito com disciplina?". A resposta
está no repositório e pode ser auditada linha a linha:
- Cerca de 300 mil linhas de Rust, em mais de 15 crates com responsabilidades
separadas.
- Mais de 2.300 testes automatizados no workspace, mais uma suíte de programas
COBOL de integração executados contra o runtime.
- Desenvolvimento dirigido por especificação: mais de 50 specs numeradas, cada
uma com requisitos, plano e lista de tarefas versionados junto do código.
- Changelog detalhado, que descreve a causa raiz de cada correção - não apenas
"bug fix".
- Revisão adversarial: nenhum agente aprova o próprio trabalho, regra que vale
tanto para o código que os agentes escrevem para você quanto para o código do
próprio produto.
- Sem dependências pesadas na construção: não há Python, Node, JVM, CMake, NASM
nem C++ em lugar nenhum do build. Um compilador C e um linker - que já vêm com
o que o Rust exige - dão conta de tudo.
Sobre as suas aplicações: o que você cria com o PowerRustCOBOL AI é seu.
Código, formulários, assets, binários e pacotes pertencem aos seus autores e
podem ser licenciados como você quiser, inclusive de forma proprietária e
comercial. Os componentes do próprio PowerRustCOBOL permanecem Apache 2.0 e
exigem apenas a preservação dos avisos de licença.
Como baixar e testar
====================
Pacotes prontos, autocontidos - descompacte e execute, sem instalar nada antes:
- Linux x86_64 (compilado em glibc 2.35: roda de Ubuntu 22.04 para cima, Debian
12+, Fedora 36+)
- Windows x86_64 (Windows 10 e 11)
- macOS Apple Silicon (bundle .app assinado ad-hoc)
- macOS Intel
Downloads: github.com/CloudLandBeta/PowerRustCOBOL/releases
Ou compile do fonte - é só um cargo build:
git clone github.com/CloudLandBeta/PowerRustCOBOL.git
cd PowerRustCOBOL
cargo build --release
cargo run --release -p cobolt-ide
Requisitos: Rust estável 1.92 ou mais novo, Git e o toolchain C da sua
plataforma (Xcode Command Line Tools no macOS; Visual Studio Build Tools com
"Desktop development with C++" no Windows; build-essential mais as bibliotecas
GTK/XCB no Linux). O guia completo de compilação por sistema operacional está em
docs/BUILDING.md.
Documentação:
- Repositório: github.com/CloudLandBeta/PowerRustCOBOL
- Guia do Desenvolvedor:
github.com/CloudLandBeta/PowerRustCOBOL/blob/main/docs/
developers-guide-en.md
- Referência de sintaxe COBOL-85 suportada, formato de arquivo indexado, runtime
de banco de dados e observabilidade: pasta docs/.
O convite
=========
Se você programa COBOL - e principalmente se você já construiu telas em Fujitsu
PowerCOBOL ou em Veryant isCOBOL o PowerRustCOBOL foi desenhado pensando nos
seus conhecimentos. Você vai reconhecer o formulário, a folha de propriedades, o
handler preso ao controle e o executável no fim. E vai encontrar coisas que não
existiam: aritmética exata de 128 bits, arquivos indexados ACID, SQL em três
bancos sem instalar driver, bibliotecas Rust chamáveis do COBOL, e uma equipe de
agentes que escreve COBOL no padrão da casa e revisa o próprio trabalho.
Baixe. Instale. Construa alguma coisa. E depois nos diga o que quebrou.
É exatamente isso que um Release Candidate pede - e é a contribuição mais
valiosa que você pode dar ao projeto neste momento. Abra uma issue no GitHub com
o que encontrar: um relato bem descrito nesta fase vale mais do que dez depois
do lançamento.
PowerRustCOBOL foundation is a simple set of rules:
Be honest: I will share clear facts.
Be fair: I will treat your questions with equal care.
Be kind: I will keep my tone helpful and polite.
Don't lie: I will not make things up.
Suas descrições de problemas são monitoradas, resolvidas e respondidas por IA.
Existe uma fase de revisão antes da implementação, então seja responsável.
Qualquer tentativa de corromper o projeto ou de inserir solicitações que fujam
dos conceitos acima poderá resultar em banimento do repositório.
Sobre o repositório
Hoje o repositório está aberto e o código fonte disponível para download. Em
breve o repositório será fechado, acessível apenas a sponsors do projeto
(US$10/mês). Após o fechamento do repositório, o código executável estará
disponível mesmo para quem não sponsor, mas será atualizado apenas 1 vez a cada
6 meses, incluindo correções de bugs. Patrocinadores terão acesso a builds
diários, com correções e novos recursos.
Projetos open source não sobrevivem sem patrocínio.
Obrigado por chegar até aqui, agora baixe, teste e faça história
PowerRustCOBOL AI - Release Candidate disponível para download e teste
================================================
Um ambiente RAD moderno para COBOL, escrito em Rust, com uma malhax de agentes de
IA integrada. Open source, licença Apache 2.0.
Olá, meu nome é Emerson, sou o principal arquiteto da solução PowerRustCOBOL AI,
uma solução desenhada para trazer o desenvolvedor COBOL, isto é, você, para a
realidade do desenvolvimento atual com IA, tanto em termos do ambiente de
desenvolvimento quanto das aplicações escritas com o mesmo.
Hoje estamos liberando o terceiro Release Candidate, disponível para quem quiser
baixar, instalar e testar sem custos visando a liberação da primeira versão
produtiva em cerca de duas semanas.
github.com/CloudLandBeta/PowerRustCOBOL/...ses/tag/v1.61.185RC3
Antes de tudo: o que "Release Candidate" significa aqui
=======================================================
- O conjunto de funcionalidades está fechado. O que você vê neste RC é o que
entra na primeira versão de produção.
- O que ainda falta ser implementado? Falta o uso real, em máquinas reais, com
aplicações reais - a única coisa que nenhuma suíte de testes substitui. É
exatamente para isso que a RC existe e é exatamente por isso que estamos
chamando você.
- Bugs são esperados. Reporte os problemas encontrados na página do projeto no
GitHub de forma clara, com indicação do componente, estrutura da linguagem ou
configuração que falhou. Evite textos do tipo "o botão não funciona", dando
preferência a uma descrição mais objetiva "O evento onClick de um Button-1 não
está funcionando". Dê preferência ao inglês (use o Google Translate se
necessário). github.com/CloudLandBeta/PowerRustCOBOL/issues
O que é o PowerRustCOBOL AI
===========================
Três componentes, três papéis:
+
+
+
| Nome | O que é
+
+
| RustCOBOL | A linguagem - um dialeto COBOL-85
| | com extensões COBOL-2002, COBOL-2014
| | e COBOL-2023.
+
+
| PRC AI | O IDE de desktop: contém o designer
| | visual de formulários, editor,
| | depurador e os agentes de IA.
+
+
| rcrun | O runtime e compilador CLI.
+
+
A ideia é simples de enunciar e trabalhosa de cumprir: um COBOL que você usa
para criar e distribuir aplicações modernas, multiplataforma, sem runtime
proprietário para instalar na máquina do cliente, sem dependência de fornecedor,
e sem abrir mão de escrever COBOL de verdade. Um cuidado especial foi tomado
para não adicionar sintaxe que não é própria do COBOL, embora algumas liberdades
tenham sido tomadas para diminuir consideravelmente a verbosidade da linguagem.
A IDE
=====
- Designer visual de formulários com canvas completo, snap de grade,
redimensionamento de controles e do próprio formulário por arrasto,
alinhamento multi-seleção e ordenação de profundidade (z-order).
- 42 controles distribuídos em Comuns, Contêineres, Dados, Gráficos, Menu,
Não-visuais e Gráficos estatísticos. Entre eles: Animator (renderiza GIF /
WebP / APNG nativamente), Knob (dial rotativo com preenchimento bipolar),
Gauge (KPI radial / linear / donut com zonas automáticas de alerta e crítico),
Switch, FileDropZone (arrastar-e-soltar ou seletor nativo), Maps
(OpenStreetMap embutido, com pan e zoom), WebSearch, TreeView, DataGrid,
Splitter, SideMenu e os seis tipos de gráfico.
- Motor de renderização unificado: o que você vê no designer é pixel a pixel o
que aparece no preview, no formulário em execução e no binário compilado.
- Raio de canto universal e recorte arredondado: contêineres têm CornerRadius
configurável e os filhos recortam corretamente contra a borda arredondada do
pai.
- Transparência em todo controle (Transparency, 0 a 100), com uma regra de
legibilidade embutida: uma legenda que ficaria abaixo do contraste WCAG AA
contra o que estiver atrás é automaticamente invertida para o polo que lê.
- 32 temas de IDE (Dark Glass, Dracula, Nord, Tokyo Night, Solarized, GitHub,
Catppuccin, Neumórficos e outros) e estilos de formulário (Classic, Enhanced,
Neumorphic Light/Dark) aplicados com uma única propriedade no formulário - não
controle a controle.
- Editor visual de menus com árvore hierárquica, catálogo de ícones vetoriais
embutido e assinaturas de integridade HMAC na configuração.
- Data binding e arrays de controles: ligação direta a fontes SQL e Visual
Repeating Groups, que expandem um GroupBox ou Panel automaticamente conforme a
quantidade de linhas retornada em tempo de execução.
- Depurador de formulários (RAD debugging): janela própria, sempre no topo, com
breakpoints, step In/Out/Over, inspetor visual de variáveis e execução animada
de 1 a 10 linhas por segundo - dá para assistir o handler rodando.
- Validação visual e inspetor de formulário: selos de erro em tempo real para
handlers malformados, ligações incompletas e anomalias de layout; e um gerente
de processos rcrun que mostra CPU%, memória RSS, logs e threads ao vivo, de
dentro do IDE.
- Application shell: uma aplicação corporativa não precisa virar dezenas de
janelas soltas. Um formulário principal com menu lateral abre um shell de
janela única - painel de menu, trilha de navegação (breadcrumb) e painel de
conteúdo - no qual os formulários são carregados dentro do painel. O receptor
super permite que um formulário se dirija a quem o carregou, como já se dirige
a si mesmo com me.
- Ciclo de vida de formulários: todo projeto designa um formulário principal, e
só ele inicia a aplicação - uma tela de login não pode ser pulada. Efeitos de
entrada e saída de janela são configurados uma vez por projeto.
- Interface em 6 idiomas: português, inglês, espanhol, francês, japonês e
chinês.
- Diálogos nativos de arquivo não bloqueantes - o loop de eventos nunca congela.
A linguagem RustCOBOL
=====================
COBOL-85 com extensões OO limitadas
Fonte em formato livre. As quatro divisions. WORKING-STORAGE, LOCAL-STORAGE,
LINKAGE e FILE SECTION. PIC X/A/9/S/V com repetição, USAGE DISPLAY / COMP /
BINARY / COMP-1 / COMP-2 / COMP-3 / PACKED-DECIMAL / COMP-5 / INDEX / POINTER,
OCCURS (fixo e DEPENDING ON), níveis 01/77/88, VALUE, itens de grupo, FILLER.
Verbos implementados:
MOVE, DISPLAY, ACCEPT, ADD/SUBTRACT/MULTIPLY/DIVIDE /COMPUTE com múltiplos
receptores e ROUNDED por receptor, IF, EVALUATE (com ALSO e WHEN NOT), PERFORM
em todas as formas (inline, TIMES, UNTIL com TEST BEFORE/AFTER, VARYING...AFTER,
THRU), GO TO [DEPENDING ON], SET (inclusive UP/DOWN BY e 88 TO TRUE), INITIALIZE
com REPLACING, STRING/ UNSTRING com ON OVERFLOW, INSPECT (TALLYING/REPLACING
combinados, BEFORE/AFTER INITIAL, CONVERTING), SEARCH/SEARCH ALL,
SORT/MERGE/RELEASE/RETURN, ALTER, UNLOCK, CANCEL, COMMIT, ROLLBACK, NEXT
SENTENCE fiel, ponteiros (SET ADDRESS OF), 66 RENAMES, condition-names 88 reais,
modificação de referência item(início:tamanho) em leitura e escrita, condições
abreviadas nas duas formas, programas aninhados e múltiplas unidades de programa
por arquivo, CALL ... USING BY REFERENCE/CONTENT/VALUE ... RETURNING ... ON
EXCEPTION, e COPY/REPLACE com expansão recursiva de copybooks.
Os terminadores de escopo são aceitos - END-IF, END-EVALUATE, END-PERFORM,
END-READ, END-WRITE, END-REWRITE, END-DELETE, END-START, END-SEARCH, END-STRING,
END-UNSTRING, END-ADD, END-SUBTRACT, END-MULTIPLY, END-DIVIDE, END-COMPUTE,
END-CALL, END-RETURN, mais END-ACCEPT e END-DISPLAY. Todos são opcionais, porque
o ponto fecha a instrução do mesmo jeito, mas quem tem o hábito de fechar cada
verbo explicitamente pode continuar escrevendo assim: o código é aceito como
está, sem adaptação.
O conjunto completo de funções intrínsecas do padrão COBOL-85 está implementado
- de LENGTH e NUMVAL-C a ANNUITY, PRESENT-VALUE, STANDARD-DEVIATION,
INTEGER-OF-DATE e TEST-NUMVAL.
O suporte OO é limitado de propósito ao CONSUMO de objetos, não à definição
deles. O que existe:
- o parágrafo REPOSITORY, que dá nome às classes externas que o programa usa;
- itens declarados USAGE OBJECT REFERENCE <tipo>;
- o verbo INVOKE, na forma clássica INVOKE objeto "método" USING ... RETURNING
... e na forma INVOKE objeto::"método"(args);
- o invoke inline, objeto::método(params), dentro de uma expressão.
Escrever suas próprias CLASS e METHOD continua fora de escopo.
Aritmética exata
ADD, SUBTRACT, MULTIPLY, DIVIDE e COMPUTE executam sobre uma mantissa inteira de
128 bits, sem passar por f64 em momento algum.
Resultado: 18 dígitos padrão e 31 dígitos estendidos permanecem exatos, ROUNDED
arredonda meio-para-longe-do-zero como manda o padrão, e ON SIZE ERROR é
honrado. Literais decimais são carregados exatamente desde o lexer.
Se você já perdeu um centavo em conversão de ponto flutuante, sabe por que este
parágrafo existe.
PICTUREs numéricas editadas
O motor de edição aplica supressão de zeros Z, proteção *, $ fixo e flutuante,
sinais +/- fixos e flutuantes, inserção de , . B 0 / e CR/DB - em MOVE e
DISPLAY. PIC ZZZ,ZZ9.99, $$$,$$9.99, 9(6).99CR funcionam como você espera.
As extensões: onde o RustCOBOL vai além
=======================================
Inferência de tipos
O operador :: elimina variáveis temporárias de working-storage:
Ao invés de:
WORKING-STORAGE SECTION.
01 ACUMULADORES.
05 INPUT1 PIC 9(09) COMP-5.
05 INPUT2 PIC 9(09) COMP-5.
05 OUTPUT1 PIC 9(09) COMP-5.
...
MOVE Input-1::Value TO INPUT1
MOVE Input-2::Value TO INPUT2
COMPUTE OUTPUT1 = INPUT-1 * INPUT2
MOVE OUTPUT1 TO Output::Value
Você escreve uma única linha:
COMPUTE Output::Value = Input-1::Value * Input-2::Value
Outra adição feita é o suporte a cadeias de retorno de objetos:
DISPLAY GRID-1::ROWS(1)::COLUMNS(2)::Value
Por questões de compatibilidade também é suportada a sintaxe herdada "Property"
OF Control.
EXEC RUST - Rust real compilado dentro do seu programa
Blocos EXEC RUST ... END-EXEC não são interpretados por um micro-interpretador
Rust: eles são compilados pelo rustc durante a compilação do COBOL e ligados ao
binário do seu programa. O usuário final não precisa de toolchain Rust nenhum.
Itens de dados declarados USAGE OBJECT REFERENCE RUST-<tipo> atravessam para
dentro do bloco como referências Rust tipadas de verdade.
Project's Crates - o ecossistema Rust ao alcance do COBOL
Uma categoria própria na árvore do projeto permite buscar no registro de crates
(tabela paginada com crate, versão, downloads e descrição), fixar a versão e
usar a biblioteca a partir dos seus blocos EXEC RUST. Na prática: décadas de
bibliotecas modernas disponíveis para um programa COBOL, sem FFI escrita à mão.
STORAGE IS MEMORY | DISK [WITH COMPRESSION]
Uma cláusula de SELECT que escolhe o motor de arquivo indexado por arquivo:
SELECT CUSTOMER-FILE
STORAGE IS DISK WITH COMPRESSION
ASSIGN TO "customers.dat"
ORGANIZATION IS INDEXED
ACCESS MODE IS DYNAMIC
RECORD KEY IS CUSTOMER-ID
ALTERNATE RECORD KEY IS CUSTOMER-ZIP WITH DUPLICATES
FILE STATUS IS CUSTOMER-STATUS.
DISK (o padrão) é uma B+tree paginada persistente: registros lidos sob demanda,
RAM limitada mesmo em arquivos enormes. MEMORY mantém tudo em memória e grava ao
fechar. WITH COMPRESSION é um RLE rápido e sem dependências que costuma cortar
bem mais de 50% dos registros COBOL típicos, cheios de espaços.
OPEN ... WITH REGISTERED USER
Registra o operador responsável pela sessão de arquivo. COBOL não tem motor de
autenticação, e esta extensão não inventa um - ela é observacional: o usuário
passa a aparecer em cada evento do log de transações do arquivo. Auditoria, não
autorização.
User Procedures e handlers de evento
Procedimentos COBOL compartilhados, editáveis no IDE e chamáveis dos handlers
com CALL "PROCEDURE-NAME". Cada evento de controle é um programa COBOL aninhado
- um modelo que quem vem do PowerCOBOL reconhece de imediato.
Arquivos indexados: um recurso de primeira classe
=================================================
Os verbos de arquivo (OPEN/CLOSE/READ/WRITE/REWRITE/DELETE/START) são
despachados pela ORGANIZATION declarada em cada SELECT - SEQUENTIAL, LINE
SEQUENTIAL e INDEXED compartilham os verbos e cada uma mantém sua semântica.
O motor ISAM é próprio e sem dependências externas:
- RECORD KEY primária e ALTERNATE RECORD KEY [WITH DUPLICATES], ordem ascendente
em disco.
- ACCESS MODE SEQUENTIAL / RANDOM / DYNAMIC, READ ... NEXT/PREVIOUS, START ...
KEY IS = / > / >= / < / <=, cláusulas INVALID KEY / NOT INVALID KEY e FILE
STATUS completos.
- Transações controladas pelo programa: COMMIT e ROLLBACK com log de
desfazimento real - a facilidade opcional de commit e rollback que a ISO/IEC
1989:2023 acrescentou ao padrão COBOL.
- Quatro motores selecionáveis (rcrun --indexed-engine ou variável de ambiente),
todos com comportamento COBOL idêntico. Entre eles o motor redb, ACID e
resistente a queda de energia: OPEN em O(1) (cerca de 5 ms com 200 mil
registros, sem varredura de recuperação), RAM proporcional ao conjunto de
trabalho, e COMMIT/ROLLBACK que sobrevivem a um corte de energia sem corromper
índice.
- Container PRCIDX1 autodescritivo: o arquivo carrega o próprio esquema (formato
do registro e descritores de chave), com validação estrita na abertura -
incompatibilidade de esquema vira FILE STATUS 39, arquivo ausente vira 35.
- Observabilidade: log de transações por arquivo com carimbo de tempo, contagem
de registros e bytes, duração, throughput e qualidade de ordenação de chaves -
em logfmt ou NDJSON pronto para Grafana/Loki.
Integrações prontas
===================
- SQL - SQLite, PostgreSQL e MySQL sob uma única superfície de CALL
(COBOL-OPEN-DB, COBOL-EXEC-SQL, COBOL-FETCH-ROW, COBOL-NEXT-ROW,
COBOL-ROW-COUNT, COBOL-CLOSE-DB ). O backend é escolhido pela string de
conexão. Todos os drivers são Rust puro: nada de libpq, ODBC ou OpenSSL de
sistema para instalar.
- HTTP / REST - GET, POST, PUT, DELETE com cabeçalhos personalizados.
- Gráficos - seis tipos (barras, linhas, pizza, área, dispersão, donut) ligados
diretamente a tabelas COBOL.
- Maps e WebSearch - mapa navegável embutido com dados de localização, e cliente
de busca na web, ambos com ciclo de vida assíncrono.
- Timers e o objeto AgentObject, que conecta um formulário a um LLM.
A parte "AI" do nome
====================
O IDE traz uma malha de agentes que trabalham em conjunto cuidando da automação
do desenvolvimento, escrevendo código COBOL, inserindo controles num formulário,
configurando respostas para os eventos e muito mais. Os agentes trabalham de
forma coordenada por um agente central.
- Grace, a orquestradora. Ela decompõe o pedido em tarefas e roteia cada uma
para o especialista que a domina (Form Designer, COBOL Event Handler,
Data/Indexed File, Documentação, Controle de Versão). Antes de qualquer
recuperação de contexto ela avalia a clareza do pedido e pergunta em vez de
adivinhar. Mantém notas de desempenho por agente entre execuções e devolve aos
especialistas lições, não pontuações. Perguntas investigativas sobre o projeto
aberto são respondidas a partir do estado real do projeto, não de memória.
- Revisor Pedantic opcional, um para um. Para que não se confie de forma cega
nos agentes, o resultado gerado por cada um deles pode passar por um revisor
independente, que analisa se o trabalho realizado está de acordo com a tarefa
especificada. Revisores são pedantes por natureza, sempre olhando com
desconfiança o trabalho feito até que se comprove que está de acordo com o
pedido do usuário. Obs: Use revisores pedantes com modelos LLM mais simples. O
consumo de tokens é alto quando um revisor pedante é ativado, podendo consumir
rapidamente sua franquia de tokens quando se utiliza um modelo na nuvem.
- Um padrão de código COBOL que os agentes seguem - dados da aplicação em
registros 01 ... GLOBAL significativos, tabelas OCCURS em vez de campos
repetidos, buffers numéricos editados reaproveitados, inicialização de valores
em uma INITIALIZE-... SECTION dedicada, MAIN SECTION que apenas orquestra, e
inicialização de dados no onLoad do formulário, nunca no handler de um
controle. Nunca fazer uso de GO TO. O revisor cobra o mesmo padrão, então a
dupla não pode discordar.
- 17 provedores de LLM: OpenAI, Anthropic, Google Gemini, Mistral, Cohere, Groq,
DeepSeek, xAI, Perplexity, OpenRouter, HuggingFace, Together AI, Voyage AI,
Alibaba Model Studio e Ollama Cloud - e, para quem não quer nada saindo da
máquina, Ollama local e Llamafile.
- Base de conhecimento com RAG por assunto: a documentação de referência é
indexada um registro por assunto, não por arquivo, de modo que a busca devolve
o parágrafo que responde à pergunta. O IDE já vem com a base pré-embutida; os
embeddings rodam na GPU, com fallback de CPU, sob uma única política, e há
reindexação sob demanda.
- Observabilidade do próprio agente: log de atividade com duração, status HTTP e
contagem de tokens, e o indicador "Thinking..." com leitura ao vivo de
entrada/saída.
O ponto que queremos deixar claro: a IA é opcional. O IDE, o compilador e o
runtime funcionam com ou sem agentes (mas quem vai querer desenvolver sem IA
hoje em dia?).
Compilar e distribuir
=====================
rcrun build serializa a AST do programa, comprime, embute tudo - inclusive os
formulários - e produz um único binário nativo, com o LICENSE, o NOTICE e o
aviso de redistribuição ao lado.
- Nenhum arquivo .cbl viaja dentro do executável.
- Nenhum runtime para instalar na máquina do cliente.
- Um programa de console isolado nem precisa de manifesto: rcrun build hello.cbl
basta.
- Também há rcrun run (executar), rcrun check (análise sintática e semântica sem
executar) e rcrun package (empacotar o projeto para distribuição).
Em desenvolvimento: conversor Fujitsu PowerCOBOL -> PowerRustCOBOL AI
================================================
Está em desenvolvimento um conversor de projetos Fujitsu PowerCOBOL para o
PowerRustCOBOL AI, para encurtar o caminho de quem tem uma base construída
naquele ambiente. Ele ainda não faz parte desta RC - anunciaremos aqui assim que
estiver disponível para uso.
Uma nota de honestidade desde já, para não gerar expectativa errada: a conversão
trata dos conceitos - formulários, controles, propriedades, handlers de evento e
a estrutura do projeto. Não há, e não haverá, compatibilidade binária de
arquivos ISAM nem de executáveis com produtos de terceiros. Os conceitos migram;
os artefatos, não.
Em desenvolvimento: Compilador WebASM (seus formulários na Web)
============================================
Todo o projeto foi concebido para ser multiplataforma, começando com aplicações
desktop, mas em breve teremos Web, Android, iOS, WatchOS, tablets e outras
possibilidades.
Em desenvolvimento: Gerador de relatórios visual
===============================
Uma parte importante foi colocada em segundo plano por um motivo simples,
imprime-se cada vez menos, com consumo de conteúdo via browser e controles como
Datagrid e gráficos para análises que permitem um consumo de informação mais
imediato. Mesmo assim, um sofisticado ambiente de desenvolvimento de relatórios
será disponibilizado em futuras versões, com funcionalidades inéditas, incluindo
suporte SQL em arquivos ISAM (além de DB tradicionais).
O que ainda não está pronto
===========================
- Organização RELATIVE de arquivos: planejada, ainda não implementada.
- Travamento de registros entre processos: os verbos OPEN ... SHARING/WITH LOCK,
READ ... WITH [NO] LOCK e UNLOCK são analisados e acionam os locks do motor
indexado, mas dentro de uma única execução - não há coordenação entre
processos distintos do sistema operacional.
- COBOL OO completo: definir suas próprias CLASS e METHOD está fora de escopo. O
consumo de objetos existe e está descrito em "COBOL-85 com extensões OO
limitadas" - REPOSITORY, USAGE OBJECT REFERENCE, INVOKE e o invoke inline.
- WebAssembly e mobile (Android/iOS): em desenvolvimento, fora desta RC - veja
"Em desenvolvimento: Compilador WebASM" acima.
- Fora de escopo por decisão de projeto, para sempre: COMMUNICATION SECTION,
REPORT WRITER SECTION e controles ActiveX/OLE/COM.
- A documentação traduzida está atrás do inglês. O guia do desenvolvedor
completo hoje está em inglês; as traduções estão sendo atualizadas. A
interface do IDE, essa sim, está completa nos 6 idiomas.
- Suporte à nuvem. Controles para integração com nuvem (inicialmente AWS) já
estão planejados, mas ainda não estão implementados. Após o release da versão
2.0.0 que marcará a primeira versão estável para produção, teremos uma versão
2.1.x com integração a diversos serviços na nuvem.
Open source - e construído com IA, sem que isso o torne menos sério
===================================================
O PowerRustCOBOL AI é software livre sob licença Apache 2.0. E sim: foi
desenvolvido com auxílio intenso de inteligência artificial. Achamos que isso
deve ser dito claramente, e não escondido - mas também achamos que a pergunta
certa não é "foi feito com IA?" e sim "foi feito com disciplina?". A resposta
está no repositório e pode ser auditada linha a linha:
- Cerca de 300 mil linhas de Rust, em mais de 15 crates com responsabilidades
separadas.
- Mais de 2.300 testes automatizados no workspace, mais uma suíte de programas
COBOL de integração executados contra o runtime.
- Desenvolvimento dirigido por especificação: mais de 50 specs numeradas, cada
uma com requisitos, plano e lista de tarefas versionados junto do código.
- Changelog detalhado, que descreve a causa raiz de cada correção - não apenas
"bug fix".
- Revisão adversarial: nenhum agente aprova o próprio trabalho, regra que vale
tanto para o código que os agentes escrevem para você quanto para o código do
próprio produto.
- Sem dependências pesadas na construção: não há Python, Node, JVM, CMake, NASM
nem C++ em lugar nenhum do build. Um compilador C e um linker - que já vêm com
o que o Rust exige - dão conta de tudo.
Sobre as suas aplicações: o que você cria com o PowerRustCOBOL AI é seu.
Código, formulários, assets, binários e pacotes pertencem aos seus autores e
podem ser licenciados como você quiser, inclusive de forma proprietária e
comercial. Os componentes do próprio PowerRustCOBOL permanecem Apache 2.0 e
exigem apenas a preservação dos avisos de licença.
Como baixar e testar
====================
Pacotes prontos, autocontidos - descompacte e execute, sem instalar nada antes:
- Linux x86_64 (compilado em glibc 2.35: roda de Ubuntu 22.04 para cima, Debian
12+, Fedora 36+)
- Windows x86_64 (Windows 10 e 11)
- macOS Apple Silicon (bundle .app assinado ad-hoc)
- macOS Intel
Downloads: github.com/CloudLandBeta/PowerRustCOBOL/releases
Ou compile do fonte - é só um cargo build:
git clone github.com/CloudLandBeta/PowerRustCOBOL.git
cd PowerRustCOBOL
cargo build --release
cargo run --release -p cobolt-ide
Requisitos: Rust estável 1.92 ou mais novo, Git e o toolchain C da sua
plataforma (Xcode Command Line Tools no macOS; Visual Studio Build Tools com
"Desktop development with C++" no Windows; build-essential mais as bibliotecas
GTK/XCB no Linux). O guia completo de compilação por sistema operacional está em
docs/BUILDING.md.
Documentação:
- Repositório: github.com/CloudLandBeta/PowerRustCOBOL
- Guia do Desenvolvedor:
github.com/CloudLandBeta/PowerRustCOBOL/blob/main/docs/
developers-guide-en.md
- Referência de sintaxe COBOL-85 suportada, formato de arquivo indexado, runtime
de banco de dados e observabilidade: pasta docs/.
O convite
=========
Se você programa COBOL - e principalmente se você já construiu telas em Fujitsu
PowerCOBOL ou em Veryant isCOBOL o PowerRustCOBOL foi desenhado pensando nos
seus conhecimentos. Você vai reconhecer o formulário, a folha de propriedades, o
handler preso ao controle e o executável no fim. E vai encontrar coisas que não
existiam: aritmética exata de 128 bits, arquivos indexados ACID, SQL em três
bancos sem instalar driver, bibliotecas Rust chamáveis do COBOL, e uma equipe de
agentes que escreve COBOL no padrão da casa e revisa o próprio trabalho.
Baixe. Instale. Construa alguma coisa. E depois nos diga o que quebrou.
É exatamente isso que um Release Candidate pede - e é a contribuição mais
valiosa que você pode dar ao projeto neste momento. Abra uma issue no GitHub com
o que encontrar: um relato bem descrito nesta fase vale mais do que dez depois
do lançamento.
PowerRustCOBOL foundation is a simple set of rules:
Be honest: I will share clear facts.
Be fair: I will treat your questions with equal care.
Be kind: I will keep my tone helpful and polite.
Don't lie: I will not make things up.
Suas descrições de problemas são monitoradas, resolvidas e respondidas por IA.
Existe uma fase de revisão antes da implementação, então seja responsável.
Qualquer tentativa de corromper o projeto ou de inserir solicitações que fujam
dos conceitos acima poderá resultar em banimento do repositório.
Sobre o repositório
Hoje o repositório está aberto e o código fonte disponível para download. Em
breve o repositório será fechado, acessível apenas a sponsors do projeto
(US$10/mês). Após o fechamento do repositório, o código executável estará
disponível mesmo para quem não sponsor, mas será atualizado apenas 1 vez a cada
6 meses, incluindo correções de bugs. Patrocinadores terão acesso a builds
diários, com correções e novos recursos.
Projetos open source não sobrevivem sem patrocínio.
Obrigado por chegar até aqui, agora baixe, teste e faça história
Ultima edição: 3 dias 9 horas atrás por eslopes. Razão: Ajustando ao tamanho do forum
Os seguintes usuário(s) disseram Obrigado: bopnet, ricardo.silva
Por favor Entrar ou Registrar para participar da conversa.