MNDD — Mythus Natural Development Daemon
IDE moderna para Natural — VS Code + daemon C com NNI nativo  ·  Substitui NaturalONE 9.x + NDV + EntireX
84%
NaturalONE (111/132)
31
SYSEXT APIs
3
licenças SAG eliminadas
(comparativo Mythus, Out/2025 — referência: NaturalONE 9.4)
0
Setup NSC
1
Antes / Depois
2
Bibliotecas
3
Editor + F12
4
Stow + Erros
5
Git nativo
6
Sync 3-way

Autenticação NSC — Login Único

Login único. O desenvolvedor usa as mesmas credenciais que já tem no NSC.

NSC---SP via SYSSEC, prc=0, biblioteca default herdada do perfil NSC. user_worker spawn em <15s.

VS Code — Command Palette
> MNDD: Sessão NSC
Servidor
prod.dem-natural.local:4901
Usuário NSC
DEV1
Senha
••••••••
Fluxo de autenticação
VS Code
MNDD ext.
TCP/JSON
daemon C
libnatural.so
NNI logon
NSC---SP
SYSSEC
FSEC check
Adabas FSEC
auth store
MNDD ✓ DEV1 (lib default: SYSDEV) — Natural 8.2.7 NSC 9.3
Sessão ativa — token 1f2a…3e91 NSC---SP NNI logon posix_spawn --worker
Login único. O desenvolvedor usa as mesmas credenciais NSC que já tem. Sem usuário novo, sem senha separada.
Detalhe técnico: NNI logon via bibliotea default herdada do perfil NSC (prc=0). user_worker spawn via posix_spawn após logon; NSC-SP valida no Adabas FSEC. Spawn em <15s em ambiente RHEL 8.

Antes e Depois — NaturalONE Designer × VS Code com MNDD

Mesmo programa, dois mundos. Boot 16× mais rápido, RAM 10× menor, sem licença SAG.

Eclipse 4.x + EMF/GEF/JFace + JVM × Electron + Monaco + TypeScript. Mesmo CAD-VEIC.NSN aberto nos dois.

Mockup ilustrativo — não é screenshot oficial Software AG
Natural Designer 9.4 — SYSVEIC/CAD-VEIC.NSN
FileEditSourceRefactorNavigateSearchProjectRunWindowHelp
💾 🔍 📋 🔄
Natural Perspective Java EE
Project Explorer
▼ 📁 SYSVEIC
▼ 📁 Programs
[P] CAD-VEIC.NSN
[P] CON-VEIC.NSN
[P] REL-VEIC.NSN
▼ 📁 Subprograms
[S] VAL-CHASSI.NSN
* CAD-VEIC.NSN - Cadastro de Veiculos DETRAN-DEMO
* library: SYSVEIC | (c) Mythus Solutions
DEFINE DATA
LOCAL USING DDM-VEICULOS
LOCAL
  01 #PLACA    (A8)
  01 #RENAVAM  (P11)
  01 #CHASSI   (A17)
  01 #VALIDO   (L)
  01 #MSG      (A60)
END-DEFINE
*
INPUT USING MAP 'MAP-CADVEIC'
  #PLACA   := MAP-PLACA
  #RENAVAM := MAP-RENAVAM
  #CHASSI  := MAP-CHASSI
*
CALLNAT 'VAL-CHASSI' #CHASSI #VALIDO #MSG
IF NOT #VALIDO
  REINPUT #MSG MARK *MAP-CHASSI
END-IF
*
FIND VEICULOS WITH PLACA = #PLACA
  IF NO RECORDS FOUND
    STORE VEICULOS
  END-NORECORD
END-FIND
END
Outline
DEFINE DATA
#PLACA
#RENAVAM
#CHASSI
#VALIDO
MAIN
INPUT MAP
CALLNAT
FIND
Problems (3)
Tasks
Console
Properties
◆ NAT0082 Variable #CHASSI not defined
◆ NAT1081 Subprogram VAL-CHASSI not found
◆ NAT0012 Invalid token
Workspace: ~/Software AG/workspace  ·  Eclipse 4.21  ·  JDK 1.8  ·  Boot: 47s  ·  RAM idle: 2.1 GB  ·  Licença: SAG seat
CAD-VEIC.NSN — SYSVEIC — Code — ▢ ✕
Arquivo Editar Seleção Exibir Ir Executar Terminal Ajuda
› NATURAL OBJECTS
▼ MNDD: prod.dem-natural.local:4901
▼ 📁 SYSVEIC FUSER
▼ Programs
[P] CAD-VEIC.NSN ● 47
[P] CON-VEIC.NSN 38
[P] REL-VEIC.NSN 52
▼ Subprograms
[S] VAL-CHASSI.NSN 23
► Maps
► Resources (3)
● CAD-VEIC.NSN
VAL-CHASSI.NSN
SYSVEIC Programs CAD-VEIC.NSN
1* CAD-VEIC.NSN - Cadastro de Veiculos DETRAN-DEMO
2* library: SYSVEIC | (c) Mythus Solutions
3DEFINE DATA
4LOCAL USING DDM-VEICULOS
5LOCAL
6  01 #PLACA    (A8)
7  01 #RENAVAM  (P11)
8  01 #CHASSI   (A17)
9  01 #VALIDO   (L)
10  01 #MSG      (A60)
11END-DEFINE
12*
13INPUT USING MAP 'MAP-CADVEIC'
14  #PLACA   := MAP-PLACA
15  #RENAVAM := MAP-RENAVAM
16  #CHASSI  := MAP-CHASSI
17*
18CALLNAT 'VAL-CHASSI' #CHASSI #VALIDO #MSG
19IF NOT #VALIDO
20  REINPUT #MSG MARK *MAP-CHASSI
21END-IF
22*
23FIND VEICULOS WITH PLACA = #PLACA
24  IF NO RECORDS FOUND
25    STORE VEICULOS
26  END-NORECORD
27END-FIND
28END
🍁 master* ↓1↑2 · LF · UTF-8 · Natural · Ln 18, Col 12 · MNDD ✓ DEV1
Boot Time
47s
3s
16× mais rápido
RAM Idle
2.1 GB
<200 MB
10× menor
Licença
SAG seat
open
0 SAG
Comparativo Mythus, Out/2025. Referência: NaturalONE 9.4 em Eclipse 4.21 / RHEL 8. Mockups ilustrativos — não reproduzem screenshots oficiais Software AG nem Microsoft.
Conclusão executiva: Mesmo código Natural. Ferramentas da década de 2020. Sem mudar nada no servidor SAG.
Stack: Eclipse 4.21 + EMF/GEF/JFace + JVM heap 2 GB vs Electron 22 + Monaco Editor + TypeScript + daemon C puro. LSP nativo vs adapter proprietario SAG. Sem EMF, sem OSGi, sem JVM.

Libraries e Objetos — Discovery

Cliente vê suas próprias libraries — sem importar projetos, sem checkout massivo.

Filtro NSC server-side — desenvolvedor só enxerga libraries do seu perfil.

EXPLORER — Code — ▢ ✕
Arquivo Editar Seleção Exibir Ir Executar Terminal Ajuda
› NATURAL OBJECTS
▼ MNDD: prod.dem-natural.local:4901
▼ 📁 SYSVEIC FUSER
▼ Programs
[P] CAD-VEIC.NSN ● 47
[P] CON-VEIC.NSN 38
[P] REL-VEIC.NSN 52
▼ Subprograms
[S] VAL-CHASSI.NSN 23
► Maps
► Resources (3)
● CAD-VEIC.NSN
Clique em CAD-VEIC.NSN na árvore para abrir o arquivo.
Vista tree completa. Clique em qualquer objeto para abrir direto no editor. Sem checkout prévio, sem configuração de projeto.
Detalhe técnico: library.list faz interseção FUSER ∩ NSCXR — descarta SYS* do FNAT. object.list com paginação cursor+limit. Filtro NSC server-side via sysext_nscxr_user_libs.
USR0010NUSR4206NNSCXR filterpaginação cursor+limit
🍁 master* · LF · UTF-8 · Natural · Ln —, Col — · MNDD ✓ DEV1

Editor Natural + IntelliSense

F12 vai para a definição, Shift+F12 lista quem chama. O fluxo do dev moderno aplicado a Natural.

Parser regex local — find-references roda offline após primeiro library.read. Sem round-trip por keystroke.

CAD-VEIC.NSN — SYSVEIC — Code — ▢ ✕
Arquivo Editar Seleção Exibir Ir Executar Terminal Ajuda
▼ SYSVEIC
▼ Programs
[P] CAD-VEIC.NSN
[P] CON-VEIC.NSN
[P] REL-VEIC.NSN
▼ Subprograms
[S] VAL-CHASSI.NSN
● CAD-VEIC.NSN
VAL-CHASSI.NSN
SYSVEIC Programs CAD-VEIC.NSN
1* CAD-VEIC.NSN - Cadastro de Veiculos DETRAN-DEMO
2* library: SYSVEIC | (c) Mythus Solutions
3DEFINE DATA
4LOCAL USING DDM-VEICULOS
5LOCAL
6  01 #PLACA    (A8)
7  01 #RENAVAM  (P11)
8  01 #CHASSI   (A17)
9  01 #VALIDO   (L)
10  01 #MSG      (A60)
11END-DEFINE
12*
13INPUT USING MAP 'MAP-CADVEIC'
14  #PLACA   := MAP-PLACA
15  #RENAVAM := MAP-RENAVAM
16  #CHASSI  := MAP-CHASSI
17*
18CALLNAT 'VAL-CHASSI' #CHASSI #VALIDO #MSG
19IF NOT #VALIDO
20  REINPUT #MSG MARK *MAP-CHASSI
21END-IF
22*
23FIND VEICULOS WITH PLACA = #PLACA
24  IF NO RECORDS FOUND
25    STORE VEICULOS
26  END-NORECORD
27END-FIND
28END
F12 Go to Definition — linha 18 'VAL-CHASSI'
Definition
VAL-CHASSI.NSN linha 1 — SYSVEIC/Subprograms[Abrir ↗]
Ln 18, Col 12 · LF · UTF-8 · Natural · MNDD ✓ DEV1
OUTLINE
■ DEFINE DATA
● #PLACA
● #RENAVAM
● #CHASSI
● #VALIDO
● #MSG
■ MAIN
▷ INPUT MAP
▷ CALLNAT VAL-CHASSI
▷ FIND VEICULOS
■ ERROR-HANDLER
XRefIndex SymbolProvider

Stow + Erros Inline — Compilação

Compila no servidor Natural. Erros aparecem onde estão — não num log de batch.

STOW envia source via HTTP/JSON, daemon executa USR0210N via NNI sob identidade NSC real. Erros SYNERR voltam com linha/coluna.

CAD-VEIC.NSN — SYSVEIC — Code — ▢ ✕
Arquivo Editar Seleção Exibir Ir Executar Terminal Ajuda
● CAD-VEIC.NSN ⊗ 3
SYSVEIC Programs CAD-VEIC.NSN
1* CAD-VEIC.NSN - Cadastro de Veiculos DETRAN-DEMO
2DEFINE DATA
3LOCAL USING DDM-VEICULOS
4LOCAL
5  01 #PLACA    (A8)
6  01 #RENAVAM  (P11)
7  01 #VALIDO   (L)
8  01 #MSG      (A60)
9END-DEFINE
10*
11INPUT USING MAP 'MAP-CADVEIC'
12  #PLACA   := MAP-PLACA
13  #RENAVAM := MAP-RENAVAM
14  #CHASSI  := MAP-CHASSI NAT0082 Variable #CHASSI not defined
15*
16FIND VEICULOS WITH PLACA = #PLACA
17  IF NO RECORDS FOUND
18CALLNAT 'VAL-CHASSI' #CHASSI #VALIDO #MSG NAT1081 not found in steplib
19  STORE VEICULOS
20  END-NORECORD
21*
22*
23ENDD-FIND NAT0012 invalid token
24END
PROBLEMS 3
OUTPUT
DEBUG CONSOLE
TERMINAL
Ctrl+F7 → STOW via NNI
NAT0082 Variable #CHASSI not defined in DEFINE DATA
CAD-VEIC.NSN:14:5
NAT1081 CALLNAT 'VAL-CHASSI' not found in steplib chain
CAD-VEIC.NSN:18:1
NAT0012 Invalid token 'ENDD-FIND'
CAD-VEIC.NSN:23:1
⊗ 3 △ 0 · 🍁 master* · LF · UTF-8 · Natural · Ln 14, Col 5 · MNDD ✓ DEV1
USR0210N ACTION='STOW' USR4007N SYNERR=ON DiagnosticCollection 'mndd'
STOW envia source via HTTP/JSON; daemon executa USR0210N via NNI no user_worker do dev (identidade NSC real). Erros SYNERR voltam com linha/coluna/tamanho do token → mapeados para DiagnosticCollection no VS Code.

Git Nativo — Versionamento

Pull Request, code review, rastreabilidade — fluxo padrão de qualquer projeto. Aplicado a Natural.

Fontes Natural ficam em projeto local. Catalogados ignorados via .gitignore gerado por mndd.project.create.

CAD-VEIC.NSN — SYSVEIC — Code — ▢ ✕
Arquivo Editar Seleção Exibir Ir Executar Terminal Ajuda
SOURCE CONTROL ↻ ✓ ⋯
feature/chassi-fix
CHANGES (3)
MCAD-VEIC.NSN
MVAL-CHASSI.NSN
MMAP-CADVEIC.NSM
→ main  ·  2 rev.
CAD-VEIC.NSN ⇔ HEAD~1
SYSVEIC Programs CAD-VEIC.NSN ⇔ HEAD~1
diff --git a/SYSVEIC/CAD-VEIC.NSN b/SYSVEIC/CAD-VEIC.NSN
@@ -11,8 +11,11 @@ END-DEFINE
* Cadastro principal de veiculos
INPUT USING MAP 'MAP-CADVEIC'
#PLACA := MAP-PLACA
- #RENAVAM := MAP-RENAVAM
+ #RENAVAM := MAP-RENAVAM
+ #CHASSI := MAP-CHASSI
*
-CALLNAT 'VALCHASSI' #CHASSI #VALIDO #MSG
+CALLNAT 'VAL-CHASSI' #CHASSI #VALIDO #MSG
*
IF NOT #VALIDO
REINPUT #MSG MARK *MAP-CHASSI
END-IF
-ENDD-FIND
+END-FIND
🍁 feature/chassi-fix · ↓0↑3 · LF · UTF-8 · Natural · MNDD ✓ DEV1
Pull Request → main 2 reviewers CI ✓ feature/chassi-fix — 3 commits ahead
Git nativo VS Code .gitignore auto p/ GP/
Não cobertos por MNDD (19 N/A): debug interativo (NDV), execução (NWO), EntireX — produtos SAG separados. Suporte planejado em v2.x.

Sync 3-way — Diferencial Absoluto

Sabe exatamente o que está dessincronizado entre seu disco, seu Git e o servidor. NaturalONE não faz isso.

Sync compara timestamp local + git HEAD hash + USR0330N timestamp servidor. Lock otimista por hash.

MNDD: SYNC STATUS — Code — ▢ ✕
Arquivo Editar Seleção Exibir Ir Executar Terminal Ajuda
▼ SYSVEIC
[P] CAD-VEIC.NSN
[P] CON-VEIC.NSN
[P] REL-VEIC.NSN
[S] VAL-CHASSI.NSN
MNDD: SYNC STATUS — SYSVEIC
ObjetoLocalHEAD (Git)ServidorAção
CON-VEIC.NSN✓ igual✓ igual✓ igualsincronizado
CAD-VEIC.NSN⇧ ahead⇧ ahead≠ diff
VAL-CHASSI.NSN✓ igual✓ igual✓ igualsincronizado
MAP-CADVEIC.NSM✓ igual✓ igual≠ diff
REL-VEIC.NSN✓ igual✓ igual✓ igualsincronizado
🍁 feature/chassi-fix · LF · UTF-8 · Natural · MNDD ✓ DEV1 · Sync: 2 diff
NaturalONE não faz isso. MNDD mostra exatamente o que está dessincronizado entre disco local, repositório Git e servidor Natural.
Algoritmo: compara timestamp local + git HEAD hash + USR0330N timestamp servidor. Lock otimista por hash do source — se servidor mudou pós-pull, recusa STOW. View implementada como MnddDecorationProvider no tree do VS Code.
mnddSyncViewMnddDecorationProvider 3-wayUSR0330N timestamp
Passo 0 / 6