pr 00.4
This commit is contained in:
parent
eb3156dd8c
commit
92df0ae074
15
Cargo.lock
generated
15
Cargo.lock
generated
@ -1927,6 +1927,20 @@ dependencies = [
|
||||
"url",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "prometeu-firmware"
|
||||
version = "0.1.0"
|
||||
dependencies = [
|
||||
"prometeu-abi",
|
||||
"prometeu-bytecode",
|
||||
"prometeu-core",
|
||||
"prometeu-hardware-contract",
|
||||
"prometeu-kernel",
|
||||
"prometeu-vm",
|
||||
"serde",
|
||||
"serde_json",
|
||||
]
|
||||
|
||||
[[package]]
|
||||
name = "prometeu-hardware-contract"
|
||||
version = "0.1.0"
|
||||
@ -1968,6 +1982,7 @@ dependencies = [
|
||||
"cpal",
|
||||
"pixels",
|
||||
"prometeu-core",
|
||||
"prometeu-firmware",
|
||||
"ringbuf",
|
||||
"serde_json",
|
||||
"winit",
|
||||
|
||||
@ -8,6 +8,7 @@ members = [
|
||||
"crates/prometeu",
|
||||
"crates/prometeu-bytecode",
|
||||
"crates/prometeu-compiler",
|
||||
"crates/prometeu-firmware",
|
||||
"crates/prometeu-analysis",
|
||||
"crates/prometeu-lsp",
|
||||
"crates/prometeu-hardware-contract"
|
||||
|
||||
@ -8,7 +8,6 @@
|
||||
//! - [`hardware`]: Virtual peripheral definitions (Graphics, Audio, Input).
|
||||
//! - [`virtual_machine`]: The stack-based execution engine for Prometeu ByteCode.
|
||||
//! - [`prometeu_os`]: Resource management, filesystem access, and syscall dispatching.
|
||||
//! - [`firmware`]: System state machine (Boot, Hub, Game Loading, Crash Handler).
|
||||
//! - [`model`]: Common data structures (Colors, Sprites, Cartridges).
|
||||
//! - [`fs`]: Virtualized filesystem abstraction for sandboxed access.
|
||||
//! - [`log`]: Centralized logging and telemetry service.
|
||||
@ -16,10 +15,7 @@
|
||||
//! The "Source of Truth" for the console's behavior lives here.
|
||||
|
||||
pub mod hardware;
|
||||
pub mod firmware;
|
||||
// pub mod fs;
|
||||
// pub mod prometeu_os;
|
||||
mod prometeu_hub;
|
||||
|
||||
pub mod fs {
|
||||
pub use prometeu_kernel::fs::*;
|
||||
|
||||
15
crates/prometeu-firmware/Cargo.toml
Normal file
15
crates/prometeu-firmware/Cargo.toml
Normal file
@ -0,0 +1,15 @@
|
||||
[package]
|
||||
name = "prometeu-firmware"
|
||||
version = "0.1.0"
|
||||
edition = "2024"
|
||||
license.workspace = true
|
||||
|
||||
[dependencies]
|
||||
prometeu-core = { path = "../prometeu-core" }
|
||||
prometeu-vm = { path = "../prometeu-vm" }
|
||||
prometeu-kernel = { path = "../prometeu-kernel" }
|
||||
prometeu-bytecode = { path = "../prometeu-bytecode" }
|
||||
prometeu-abi = { path = "../prometeu-abi" }
|
||||
prometeu-hardware-contract = { path = "../prometeu-hardware-contract" }
|
||||
serde = { version = "1.0.228", features = ["derive"] }
|
||||
serde_json = "1.0.149"
|
||||
@ -2,12 +2,12 @@ use prometeu_vm::VirtualMachine;
|
||||
use crate::firmware::boot_target::BootTarget;
|
||||
use crate::firmware::firmware_state::{FirmwareState, LoadCartridgeStep, ResetStep};
|
||||
use crate::firmware::prometeu_context::PrometeuContext;
|
||||
use crate::hardware::{HardwareBridge, InputSignals};
|
||||
use crate::model::Cartridge;
|
||||
use prometeu_core::hardware::{HardwareBridge, InputSignals};
|
||||
use prometeu_core::abi::model::Cartridge;
|
||||
use crate::prometeu_hub::PrometeuHub;
|
||||
use crate::prometeu_os::PrometeuOS;
|
||||
use prometeu_core::prometeu_os::PrometeuOS;
|
||||
|
||||
use crate::telemetry::CertificationConfig;
|
||||
use prometeu_core::abi::telemetry::CertificationConfig;
|
||||
|
||||
/// PROMETEU Firmware.
|
||||
///
|
||||
@ -1,7 +1,7 @@
|
||||
use crate::firmware::firmware_state::{FirmwareState, LaunchHubStep};
|
||||
use crate::firmware::prometeu_context::PrometeuContext;
|
||||
use crate::log::{LogLevel, LogSource};
|
||||
use crate::model::Color;
|
||||
use prometeu_core::abi::log::{LogLevel, LogSource};
|
||||
use prometeu_core::abi::model::Color;
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct AppCrashesStep {
|
||||
@ -1,6 +1,6 @@
|
||||
use crate::firmware::firmware_state::{AppCrashesStep, FirmwareState};
|
||||
use crate::firmware::prometeu_context::PrometeuContext;
|
||||
use crate::log::{LogLevel, LogSource};
|
||||
use prometeu_core::abi::log::{LogLevel, LogSource};
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct GameRunningStep;
|
||||
@ -1,6 +1,6 @@
|
||||
use crate::firmware::firmware_state::{AppCrashesStep, FirmwareState};
|
||||
use crate::firmware::prometeu_context::PrometeuContext;
|
||||
use crate::log::{LogLevel, LogSource};
|
||||
use prometeu_core::abi::log::{LogLevel, LogSource};
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct HubHomeStep;
|
||||
@ -1,8 +1,8 @@
|
||||
use crate::firmware::boot_target::BootTarget;
|
||||
use crate::firmware::firmware_state::{FirmwareState, HubHomeStep, LoadCartridgeStep};
|
||||
use crate::firmware::prometeu_context::PrometeuContext;
|
||||
use crate::log::{LogLevel, LogSource};
|
||||
use crate::model::CartridgeLoader;
|
||||
use prometeu_core::abi::log::{LogLevel, LogSource};
|
||||
use prometeu_core::abi::model::CartridgeLoader;
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct LaunchHubStep;
|
||||
@ -1,7 +1,7 @@
|
||||
use crate::firmware::firmware_state::{FirmwareState, GameRunningStep, HubHomeStep};
|
||||
use crate::firmware::prometeu_context::PrometeuContext;
|
||||
use crate::log::{LogLevel, LogSource};
|
||||
use crate::model::{AppMode, Cartridge, Color, Rect};
|
||||
use prometeu_core::abi::log::{LogLevel, LogSource};
|
||||
use prometeu_core::abi::model::{AppMode, Cartridge, Color, Rect};
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct LoadCartridgeStep {
|
||||
@ -1,7 +1,7 @@
|
||||
use crate::firmware::boot_target::BootTarget;
|
||||
use crate::firmware::firmware_state::{FirmwareState, LaunchHubStep, SplashScreenStep};
|
||||
use crate::firmware::prometeu_context::PrometeuContext;
|
||||
use crate::log::{LogLevel, LogSource};
|
||||
use prometeu_core::abi::log::{LogLevel, LogSource};
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct ResetStep;
|
||||
@ -1,7 +1,7 @@
|
||||
use crate::firmware::firmware_state::{FirmwareState, LaunchHubStep};
|
||||
use crate::firmware::prometeu_context::PrometeuContext;
|
||||
use crate::log::{LogLevel, LogSource};
|
||||
use crate::model::Color;
|
||||
use prometeu_core::abi::log::{LogLevel, LogSource};
|
||||
use prometeu_core::abi::model::Color;
|
||||
|
||||
#[derive(Debug, Clone)]
|
||||
pub struct SplashScreenStep {
|
||||
@ -1,8 +1,8 @@
|
||||
use prometeu_vm::VirtualMachine;
|
||||
use crate::firmware::boot_target::BootTarget;
|
||||
use crate::hardware::{HardwareBridge, InputSignals};
|
||||
use prometeu_core::hardware::{HardwareBridge, InputSignals};
|
||||
use crate::prometeu_hub::PrometeuHub;
|
||||
use crate::prometeu_os::PrometeuOS;
|
||||
use prometeu_core::prometeu_os::PrometeuOS;
|
||||
|
||||
pub struct PrometeuContext<'a> {
|
||||
pub vm: &'a mut VirtualMachine,
|
||||
5
crates/prometeu-firmware/src/lib.rs
Normal file
5
crates/prometeu-firmware/src/lib.rs
Normal file
@ -0,0 +1,5 @@
|
||||
pub mod firmware;
|
||||
pub mod prometeu_hub;
|
||||
|
||||
pub use firmware::*;
|
||||
pub use prometeu_hub::*;
|
||||
@ -1,8 +1,8 @@
|
||||
use crate::hardware::HardwareBridge;
|
||||
use crate::log::{LogLevel, LogSource};
|
||||
use crate::model::{Color, Rect};
|
||||
use prometeu_core::hardware::HardwareBridge;
|
||||
use prometeu_core::abi::log::{LogLevel, LogSource};
|
||||
use prometeu_core::abi::model::{Color, Rect};
|
||||
use crate::prometeu_hub::window_manager::WindowManager;
|
||||
use crate::prometeu_os::PrometeuOS;
|
||||
use prometeu_core::prometeu_os::PrometeuOS;
|
||||
|
||||
/// PrometeuHub: Launcher and system UI environment.
|
||||
pub struct PrometeuHub {
|
||||
@ -1,4 +1,4 @@
|
||||
use crate::model::{Color, Rect, Window, WindowId};
|
||||
use prometeu_core::abi::model::{Color, Rect, Window, WindowId};
|
||||
|
||||
/// PROMETEU Window Manager.
|
||||
pub struct WindowManager {
|
||||
@ -50,7 +50,7 @@ impl WindowManager {
|
||||
#[cfg(test)]
|
||||
mod tests {
|
||||
use super::*;
|
||||
use crate::model::Rect;
|
||||
use prometeu_core::abi::model::Rect;
|
||||
|
||||
#[test]
|
||||
fn test_window_manager_focus() {
|
||||
@ -15,6 +15,7 @@ include = ["../../VERSION.txt"]
|
||||
|
||||
[dependencies]
|
||||
prometeu-core = { path = "../prometeu-core" }
|
||||
prometeu-firmware = { path = "../prometeu-firmware" }
|
||||
winit = "0.30.12"
|
||||
pixels = "0.15.0"
|
||||
cpal = "0.15.3"
|
||||
|
||||
@ -1,6 +1,6 @@
|
||||
use prometeu_core::debugger_protocol::*;
|
||||
use prometeu_core::firmware::{BootTarget, Firmware};
|
||||
use prometeu_core::model::CartridgeLoader;
|
||||
use prometeu_firmware::{BootTarget, Firmware};
|
||||
use prometeu_core::abi::model::CartridgeLoader;
|
||||
use prometeu_core::Hardware;
|
||||
use std::io::{Read, Write};
|
||||
use std::net::{TcpListener, TcpStream};
|
||||
|
||||
@ -10,7 +10,7 @@ pub mod utilities;
|
||||
|
||||
use cap::load_cap_config;
|
||||
use clap::Parser;
|
||||
use prometeu_core::firmware::BootTarget;
|
||||
use prometeu_firmware::BootTarget;
|
||||
use runner::HostRunner;
|
||||
use winit::event_loop::EventLoop;
|
||||
|
||||
|
||||
@ -7,7 +7,7 @@ use crate::stats::HostStats;
|
||||
use crate::utilities::draw_rgb565_to_rgba8;
|
||||
use pixels::wgpu::PresentMode;
|
||||
use pixels::{Pixels, PixelsBuilder, SurfaceTexture};
|
||||
use prometeu_core::firmware::{BootTarget, Firmware};
|
||||
use prometeu_firmware::{BootTarget, Firmware};
|
||||
use prometeu_core::Hardware;
|
||||
use std::time::{Duration, Instant};
|
||||
use winit::application::ApplicationHandler;
|
||||
@ -344,7 +344,7 @@ impl ApplicationHandler for HostRunner {
|
||||
mod tests {
|
||||
use super::*;
|
||||
use prometeu_core::debugger_protocol::DEVTOOLS_PROTOCOL_VERSION;
|
||||
use prometeu_core::firmware::BootTarget;
|
||||
use prometeu_firmware::BootTarget;
|
||||
use std::io::{Read, Write};
|
||||
use std::net::TcpStream;
|
||||
|
||||
|
||||
@ -1,4 +1,4 @@
|
||||
use prometeu_core::firmware::Firmware;
|
||||
use prometeu_firmware::Firmware;
|
||||
use prometeu_core::Hardware;
|
||||
use std::time::{Duration, Instant};
|
||||
use winit::window::Window;
|
||||
|
||||
@ -404,36 +404,6 @@ pub struct AnalysisDb {
|
||||
> 3. Sempre manter o workspace compilável a cada PR.
|
||||
|
||||
---
|
||||
|
||||
## PR-00.3 — Extrair `prometeu-kernel` (OS + FS + syscalls)
|
||||
|
||||
**Branch:** `pr-00-3-prometeu-kernel`
|
||||
|
||||
### Objetivo
|
||||
|
||||
Mover `prometeu_os/*` + `fs/*` (e qualquer dispatcher de syscalls) para `crates/prometeu-kernel/`.
|
||||
|
||||
### Passos prescritivos
|
||||
|
||||
1. Criar crate `crates/prometeu-kernel/`.
|
||||
2. Mover:
|
||||
|
||||
* `crates/prometeu-core/src/prometeu_os/**` → `crates/prometeu-kernel/src/**`
|
||||
* `crates/prometeu-core/src/fs/**` → `crates/prometeu-kernel/src/fs/**`
|
||||
3. Garantir que o kernel **depende** de:
|
||||
|
||||
* `prometeu-abi`
|
||||
* `prometeu-vm`
|
||||
4. Garantir que a VM chama syscalls via interface implementada pelo kernel.
|
||||
5. Manter shim temporário no `prometeu-core` (se existir): `pub mod prometeu_os { pub use prometeu_kernel::*; }`
|
||||
|
||||
### Critérios de aceite
|
||||
|
||||
* `cargo test` verde.
|
||||
* Sem mudança comportamental (mesmo conjunto de syscalls e traps).
|
||||
|
||||
---
|
||||
|
||||
## PR-00.4 — Depurar `prometeu-core`: remover execução e virar apenas compat layer
|
||||
|
||||
**Branch:** `pr-00-4-deprecate-prometeu-core`
|
||||
@ -457,20 +427,6 @@ Eliminar o conteúdo executável restante do `prometeu-core`, deixando-o como re
|
||||
|
||||
---
|
||||
|
||||
## PR-00.5 — (Opcional) Extrair `prometeu-firmware` (hub/boot)
|
||||
|
||||
**Branch:** `pr-00-5-prometeu-firmware`
|
||||
|
||||
### Objetivo
|
||||
|
||||
Mover `firmware/*` + `prometeu_hub/*` para `crates/prometeu-firmware/`.
|
||||
|
||||
### Critérios
|
||||
|
||||
* runtime desktop depende de `prometeu-firmware`.
|
||||
|
||||
---
|
||||
|
||||
## PR-00.6 — Remover `prometeu-core` e migrar consumidores
|
||||
|
||||
**Branch:** `pr-00-6-remove-prometeu-core`
|
||||
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user