Novedades en PowerRustCOBOL 1.60.15 y 1.60.30
Un bloque EXEC RUST puede abrir su propia ventana (1.60.15)
El nuevo módulo cobolt_windows está en alcance en todos los bloques de un programa con formularios o bloques. Desde un manejador de eventos se abre una ventana propia con egui arbitrario:
Código:
EXEC RUST
let picked = std::sync::Arc::new(std::sync::Mutex::new(0_i64));
let out = picked.clone();
let win = cobolt_windows::open(
"pick-a-number",
eframe::egui::ViewportBuilder::default().with_title("Pick"),
move |ui, _class| {
ui.horizontal(|ui| {
for n in [1_i64, 2_i64] {
if ui.button(n.to_string()).clicked() {
*out.lock().unwrap() = n;
}
}
});
},
);
win.wait();
cobolt_objects.set_property("Label-1", "Caption",
picked.lock().unwrap().to_string());
END-EXEC.
open devuelve un manejador con is_open, close y wait; wait detiene el manejador hasta que el operador cierra la ventana (el formulario sigue pintándose, porque el intérprete tiene su propio hilo). También existen las funciones libres cobolt_windows::is_open(id) y close(id), y reabrir un id vivo reemplaza lo que dibuja. El cierre correcto desde dentro es cobolt_windows::close("id") — no send_viewport_cmd(Close), que alcanza la ventana raíz. La clausura de dibujo corre en el hilo de UI, así que el estado se comparte con el bloque mediante un Arc<Mutex<..>>.
En un programa de consola (sin formulario) se sigue usando eframe::run_native, que allí funciona porque el intérprete posee el hilo principal.
El proyecto recuerda qué PowerRustCOBOL lo construyó por completo (1.60.30)
Cada proyecto guarda built_with_version y Run — desde la barra del IDE o desde Run Form del diseñador — lo comprueba antes de arrancar nada. Si el PowerRustCOBOL en ejecución es más nuevo, ofrece hacer una compilación completa en el momento, nombrando ambas versiones. Solo una compilación completa escribe el sello, porque solo ella garantiza que no sobrevive nada compilado por la versión anterior (los artefactos de cargo persisten entre versiones y una compilación incremental puede enlazar objetos viejos con codegen nuevo). "Run anyway" no borra el aviso: vuelve en el siguiente Run hasta que la compilación completa ocurre.
En el CLI:
Código:
rcrun build --full (alias: --clean)
descarta primero el directorio de artefactos y reconstruye desde cero.
Documentación:
https://github.com/CloudLandBeta/Pow...rs-guide-en.md
Anthropic Claude Codex Agent