feat(#19): TCP/IP — bloques cliente estilo LabVIEW#70
Merged
Conversation
- Binarios compilados desde fork anlaco/red con TCP nativo - Reemplaza librería red-tcp externa para Fase 4 (Hardware)
- tcp-api.md: referencia completa de la API TCP nativa en red-cli/red-view - skills/red-lang/SKILL.md: skill de Red-Lang con sintaxis, View, Draw, Parse, TCP - CLAUDE.md: referencias actualizadas TCP integrado como objeto de bajo nivel (tcp/connect, tcp/send, tcp/receive, etc.) para soporte nativo de SCPI, Modbus y protocolos custom en Fase 4.
SCPI y VISA son conceptos distintos (protocolo vs transporte) que no debemos mezclar. QTorres ofrece bloques TCP/USBTMC genéricos; el usuario elige qué string enviar (comandos de instrumento, Modbus, HTTP, etc.). Cambios: - CLAUDE.md: lista de issues Fase 4 + nota aclaratoria - docs/plan.md: sección "comunicación con instrumentación" - docs/roadmap-9-10.md: título Fase 4, ejemplo tcp-query - docs/decisiones.md: DT-029 ejemplo con tcp-write-block - docs/ai-reference.md: mención de hardware genérico - docs/tcp-api.md: casos de uso genéricos, nota aclaratoria - skills/red-lang/SKILL.md: ejemplo TCP genérico
- 4 bloques hardware en blocks.red con dialecto block-def - Helper runtime tcp-read-helper (inyectado en .qvi generado) - Categoría 'hardware' con color turquesa oscuro en canvas-render.red - Sección "Hardware (TCP)" en paleta de bloques (canvas-dialogs.red) - 44 tests nuevos (registro, puertos, configs, emit, helper) — 526/526 PASS - Ejemplo examples/tcp-echo-demo.qvi verificado E2E con socat - Docs: corregido `to-string!` → `to string!` (no existe la primera en Red)
Rehace los 4 bloques TCP siguiendo el patrón VISA session-through de LabVIEW:
- tcp-connect → session-out ('tcp-session)
- tcp-write: session-in + data → session-out
- tcp-read: session-in → session-out + response
- tcp-close: session-in → session-out
El wire 'tcp-session (verde oliva) encadena los nodos forzando el orden
topológico igual que VISA session en LabVIEW. Sin session-through la v1
permitía que write/read se ordenasen arbitrariamente.
Helpers runtime (_make-tcp-session, _tcp-connect/write/read/close-helper)
definidos en blocks.red e inyectados en .qvi generados.
549/549 tests PASS. E2E verificado con socat (connected/HELLO/closed).
Pendiente: error-in/error-out en Fase 4-E (error cluster dedicado).
Rediseño de los 4 bloques TCP (tcp-open/write/read/close) con puertos de entrada cableables (address, remote-port, timeout-ms, bytes-to-read, data) y salidas reales (bytes-written, bytes-read) en lugar de una config inicial única. Coincide con la interfaz de los nodos TCP nativos de LabVIEW, sin error cluster (DT-029 Nivel 0 — se añadirá en Fase 4-E). - Parser block-def: default opcional para puertos de entrada - bind-emit: append/only en rama `true` para preservar path! en emit (corrige aplastamiento de _w/1, _r/2) - build-bindings: fallback a default si el puerto no está cableado - Helpers de runtime alineados con el nuevo modelo connection refnum - Ejemplo tcp-echo-demo.qvi reescrito; test-tcp.qvi añadido - Audit y review cruzado en docs/review-issue-19.md Cierra #19. Tests: 558/558 PASS. Verificado con socat echo server.
8 tasks
1af5b81 to
af3e966
Compare
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
tcp-open,tcp-write,tcp-read,tcp-close) con patrón connection refnum estilo LabVIEW.bytes-written,bytes-read,data) encadenadas porconnection-in/outpara mantener dataflow.block-defadmite defaults opcionales enin,bind-emitusaappend/onlyen ramatruepara preservarpath!enemit,build-bindingsrellena con default si el puerto no está cableado.docs/review-issue-19.mdincluye review cruzado con triage final.Cierra #19.
Test plan
red-cli tests/run-all.red→ 558/558 PASSsocat TCP-LISTEN:5000,reuseaddr,fork EXEC:/bin/catusandoexamples/tcp-echo-demo.qviexamples/test-tcp.qvidocs/review-issue-19.md)