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",
|
"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]]
|
[[package]]
|
||||||
name = "prometeu-hardware-contract"
|
name = "prometeu-hardware-contract"
|
||||||
version = "0.1.0"
|
version = "0.1.0"
|
||||||
@ -1968,6 +1982,7 @@ dependencies = [
|
|||||||
"cpal",
|
"cpal",
|
||||||
"pixels",
|
"pixels",
|
||||||
"prometeu-core",
|
"prometeu-core",
|
||||||
|
"prometeu-firmware",
|
||||||
"ringbuf",
|
"ringbuf",
|
||||||
"serde_json",
|
"serde_json",
|
||||||
"winit",
|
"winit",
|
||||||
|
|||||||
@ -8,6 +8,7 @@ members = [
|
|||||||
"crates/prometeu",
|
"crates/prometeu",
|
||||||
"crates/prometeu-bytecode",
|
"crates/prometeu-bytecode",
|
||||||
"crates/prometeu-compiler",
|
"crates/prometeu-compiler",
|
||||||
|
"crates/prometeu-firmware",
|
||||||
"crates/prometeu-analysis",
|
"crates/prometeu-analysis",
|
||||||
"crates/prometeu-lsp",
|
"crates/prometeu-lsp",
|
||||||
"crates/prometeu-hardware-contract"
|
"crates/prometeu-hardware-contract"
|
||||||
|
|||||||
@ -8,7 +8,6 @@
|
|||||||
//! - [`hardware`]: Virtual peripheral definitions (Graphics, Audio, Input).
|
//! - [`hardware`]: Virtual peripheral definitions (Graphics, Audio, Input).
|
||||||
//! - [`virtual_machine`]: The stack-based execution engine for Prometeu ByteCode.
|
//! - [`virtual_machine`]: The stack-based execution engine for Prometeu ByteCode.
|
||||||
//! - [`prometeu_os`]: Resource management, filesystem access, and syscall dispatching.
|
//! - [`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).
|
//! - [`model`]: Common data structures (Colors, Sprites, Cartridges).
|
||||||
//! - [`fs`]: Virtualized filesystem abstraction for sandboxed access.
|
//! - [`fs`]: Virtualized filesystem abstraction for sandboxed access.
|
||||||
//! - [`log`]: Centralized logging and telemetry service.
|
//! - [`log`]: Centralized logging and telemetry service.
|
||||||
@ -16,10 +15,7 @@
|
|||||||
//! The "Source of Truth" for the console's behavior lives here.
|
//! The "Source of Truth" for the console's behavior lives here.
|
||||||
|
|
||||||
pub mod hardware;
|
pub mod hardware;
|
||||||
pub mod firmware;
|
|
||||||
// pub mod fs;
|
// pub mod fs;
|
||||||
// pub mod prometeu_os;
|
|
||||||
mod prometeu_hub;
|
|
||||||
|
|
||||||
pub mod fs {
|
pub mod fs {
|
||||||
pub use prometeu_kernel::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::boot_target::BootTarget;
|
||||||
use crate::firmware::firmware_state::{FirmwareState, LoadCartridgeStep, ResetStep};
|
use crate::firmware::firmware_state::{FirmwareState, LoadCartridgeStep, ResetStep};
|
||||||
use crate::firmware::prometeu_context::PrometeuContext;
|
use crate::firmware::prometeu_context::PrometeuContext;
|
||||||
use crate::hardware::{HardwareBridge, InputSignals};
|
use prometeu_core::hardware::{HardwareBridge, InputSignals};
|
||||||
use crate::model::Cartridge;
|
use prometeu_core::abi::model::Cartridge;
|
||||||
use crate::prometeu_hub::PrometeuHub;
|
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.
|
/// PROMETEU Firmware.
|
||||||
///
|
///
|
||||||
@ -1,7 +1,7 @@
|
|||||||
use crate::firmware::firmware_state::{FirmwareState, LaunchHubStep};
|
use crate::firmware::firmware_state::{FirmwareState, LaunchHubStep};
|
||||||
use crate::firmware::prometeu_context::PrometeuContext;
|
use crate::firmware::prometeu_context::PrometeuContext;
|
||||||
use crate::log::{LogLevel, LogSource};
|
use prometeu_core::abi::log::{LogLevel, LogSource};
|
||||||
use crate::model::Color;
|
use prometeu_core::abi::model::Color;
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct AppCrashesStep {
|
pub struct AppCrashesStep {
|
||||||
@ -1,6 +1,6 @@
|
|||||||
use crate::firmware::firmware_state::{AppCrashesStep, FirmwareState};
|
use crate::firmware::firmware_state::{AppCrashesStep, FirmwareState};
|
||||||
use crate::firmware::prometeu_context::PrometeuContext;
|
use crate::firmware::prometeu_context::PrometeuContext;
|
||||||
use crate::log::{LogLevel, LogSource};
|
use prometeu_core::abi::log::{LogLevel, LogSource};
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct GameRunningStep;
|
pub struct GameRunningStep;
|
||||||
@ -1,6 +1,6 @@
|
|||||||
use crate::firmware::firmware_state::{AppCrashesStep, FirmwareState};
|
use crate::firmware::firmware_state::{AppCrashesStep, FirmwareState};
|
||||||
use crate::firmware::prometeu_context::PrometeuContext;
|
use crate::firmware::prometeu_context::PrometeuContext;
|
||||||
use crate::log::{LogLevel, LogSource};
|
use prometeu_core::abi::log::{LogLevel, LogSource};
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct HubHomeStep;
|
pub struct HubHomeStep;
|
||||||
@ -1,8 +1,8 @@
|
|||||||
use crate::firmware::boot_target::BootTarget;
|
use crate::firmware::boot_target::BootTarget;
|
||||||
use crate::firmware::firmware_state::{FirmwareState, HubHomeStep, LoadCartridgeStep};
|
use crate::firmware::firmware_state::{FirmwareState, HubHomeStep, LoadCartridgeStep};
|
||||||
use crate::firmware::prometeu_context::PrometeuContext;
|
use crate::firmware::prometeu_context::PrometeuContext;
|
||||||
use crate::log::{LogLevel, LogSource};
|
use prometeu_core::abi::log::{LogLevel, LogSource};
|
||||||
use crate::model::CartridgeLoader;
|
use prometeu_core::abi::model::CartridgeLoader;
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct LaunchHubStep;
|
pub struct LaunchHubStep;
|
||||||
@ -1,7 +1,7 @@
|
|||||||
use crate::firmware::firmware_state::{FirmwareState, GameRunningStep, HubHomeStep};
|
use crate::firmware::firmware_state::{FirmwareState, GameRunningStep, HubHomeStep};
|
||||||
use crate::firmware::prometeu_context::PrometeuContext;
|
use crate::firmware::prometeu_context::PrometeuContext;
|
||||||
use crate::log::{LogLevel, LogSource};
|
use prometeu_core::abi::log::{LogLevel, LogSource};
|
||||||
use crate::model::{AppMode, Cartridge, Color, Rect};
|
use prometeu_core::abi::model::{AppMode, Cartridge, Color, Rect};
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct LoadCartridgeStep {
|
pub struct LoadCartridgeStep {
|
||||||
@ -1,7 +1,7 @@
|
|||||||
use crate::firmware::boot_target::BootTarget;
|
use crate::firmware::boot_target::BootTarget;
|
||||||
use crate::firmware::firmware_state::{FirmwareState, LaunchHubStep, SplashScreenStep};
|
use crate::firmware::firmware_state::{FirmwareState, LaunchHubStep, SplashScreenStep};
|
||||||
use crate::firmware::prometeu_context::PrometeuContext;
|
use crate::firmware::prometeu_context::PrometeuContext;
|
||||||
use crate::log::{LogLevel, LogSource};
|
use prometeu_core::abi::log::{LogLevel, LogSource};
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct ResetStep;
|
pub struct ResetStep;
|
||||||
@ -1,7 +1,7 @@
|
|||||||
use crate::firmware::firmware_state::{FirmwareState, LaunchHubStep};
|
use crate::firmware::firmware_state::{FirmwareState, LaunchHubStep};
|
||||||
use crate::firmware::prometeu_context::PrometeuContext;
|
use crate::firmware::prometeu_context::PrometeuContext;
|
||||||
use crate::log::{LogLevel, LogSource};
|
use prometeu_core::abi::log::{LogLevel, LogSource};
|
||||||
use crate::model::Color;
|
use prometeu_core::abi::model::Color;
|
||||||
|
|
||||||
#[derive(Debug, Clone)]
|
#[derive(Debug, Clone)]
|
||||||
pub struct SplashScreenStep {
|
pub struct SplashScreenStep {
|
||||||
@ -1,8 +1,8 @@
|
|||||||
use prometeu_vm::VirtualMachine;
|
use prometeu_vm::VirtualMachine;
|
||||||
use crate::firmware::boot_target::BootTarget;
|
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_hub::PrometeuHub;
|
||||||
use crate::prometeu_os::PrometeuOS;
|
use prometeu_core::prometeu_os::PrometeuOS;
|
||||||
|
|
||||||
pub struct PrometeuContext<'a> {
|
pub struct PrometeuContext<'a> {
|
||||||
pub vm: &'a mut VirtualMachine,
|
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 prometeu_core::hardware::HardwareBridge;
|
||||||
use crate::log::{LogLevel, LogSource};
|
use prometeu_core::abi::log::{LogLevel, LogSource};
|
||||||
use crate::model::{Color, Rect};
|
use prometeu_core::abi::model::{Color, Rect};
|
||||||
use crate::prometeu_hub::window_manager::WindowManager;
|
use crate::prometeu_hub::window_manager::WindowManager;
|
||||||
use crate::prometeu_os::PrometeuOS;
|
use prometeu_core::prometeu_os::PrometeuOS;
|
||||||
|
|
||||||
/// PrometeuHub: Launcher and system UI environment.
|
/// PrometeuHub: Launcher and system UI environment.
|
||||||
pub struct PrometeuHub {
|
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.
|
/// PROMETEU Window Manager.
|
||||||
pub struct WindowManager {
|
pub struct WindowManager {
|
||||||
@ -50,7 +50,7 @@ impl WindowManager {
|
|||||||
#[cfg(test)]
|
#[cfg(test)]
|
||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
use crate::model::Rect;
|
use prometeu_core::abi::model::Rect;
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_window_manager_focus() {
|
fn test_window_manager_focus() {
|
||||||
@ -15,6 +15,7 @@ include = ["../../VERSION.txt"]
|
|||||||
|
|
||||||
[dependencies]
|
[dependencies]
|
||||||
prometeu-core = { path = "../prometeu-core" }
|
prometeu-core = { path = "../prometeu-core" }
|
||||||
|
prometeu-firmware = { path = "../prometeu-firmware" }
|
||||||
winit = "0.30.12"
|
winit = "0.30.12"
|
||||||
pixels = "0.15.0"
|
pixels = "0.15.0"
|
||||||
cpal = "0.15.3"
|
cpal = "0.15.3"
|
||||||
|
|||||||
@ -1,6 +1,6 @@
|
|||||||
use prometeu_core::debugger_protocol::*;
|
use prometeu_core::debugger_protocol::*;
|
||||||
use prometeu_core::firmware::{BootTarget, Firmware};
|
use prometeu_firmware::{BootTarget, Firmware};
|
||||||
use prometeu_core::model::CartridgeLoader;
|
use prometeu_core::abi::model::CartridgeLoader;
|
||||||
use prometeu_core::Hardware;
|
use prometeu_core::Hardware;
|
||||||
use std::io::{Read, Write};
|
use std::io::{Read, Write};
|
||||||
use std::net::{TcpListener, TcpStream};
|
use std::net::{TcpListener, TcpStream};
|
||||||
|
|||||||
@ -10,7 +10,7 @@ pub mod utilities;
|
|||||||
|
|
||||||
use cap::load_cap_config;
|
use cap::load_cap_config;
|
||||||
use clap::Parser;
|
use clap::Parser;
|
||||||
use prometeu_core::firmware::BootTarget;
|
use prometeu_firmware::BootTarget;
|
||||||
use runner::HostRunner;
|
use runner::HostRunner;
|
||||||
use winit::event_loop::EventLoop;
|
use winit::event_loop::EventLoop;
|
||||||
|
|
||||||
|
|||||||
@ -7,7 +7,7 @@ use crate::stats::HostStats;
|
|||||||
use crate::utilities::draw_rgb565_to_rgba8;
|
use crate::utilities::draw_rgb565_to_rgba8;
|
||||||
use pixels::wgpu::PresentMode;
|
use pixels::wgpu::PresentMode;
|
||||||
use pixels::{Pixels, PixelsBuilder, SurfaceTexture};
|
use pixels::{Pixels, PixelsBuilder, SurfaceTexture};
|
||||||
use prometeu_core::firmware::{BootTarget, Firmware};
|
use prometeu_firmware::{BootTarget, Firmware};
|
||||||
use prometeu_core::Hardware;
|
use prometeu_core::Hardware;
|
||||||
use std::time::{Duration, Instant};
|
use std::time::{Duration, Instant};
|
||||||
use winit::application::ApplicationHandler;
|
use winit::application::ApplicationHandler;
|
||||||
@ -344,7 +344,7 @@ impl ApplicationHandler for HostRunner {
|
|||||||
mod tests {
|
mod tests {
|
||||||
use super::*;
|
use super::*;
|
||||||
use prometeu_core::debugger_protocol::DEVTOOLS_PROTOCOL_VERSION;
|
use prometeu_core::debugger_protocol::DEVTOOLS_PROTOCOL_VERSION;
|
||||||
use prometeu_core::firmware::BootTarget;
|
use prometeu_firmware::BootTarget;
|
||||||
use std::io::{Read, Write};
|
use std::io::{Read, Write};
|
||||||
use std::net::TcpStream;
|
use std::net::TcpStream;
|
||||||
|
|
||||||
|
|||||||
@ -1,4 +1,4 @@
|
|||||||
use prometeu_core::firmware::Firmware;
|
use prometeu_firmware::Firmware;
|
||||||
use prometeu_core::Hardware;
|
use prometeu_core::Hardware;
|
||||||
use std::time::{Duration, Instant};
|
use std::time::{Duration, Instant};
|
||||||
use winit::window::Window;
|
use winit::window::Window;
|
||||||
|
|||||||
@ -404,36 +404,6 @@ pub struct AnalysisDb {
|
|||||||
> 3. Sempre manter o workspace compilável a cada PR.
|
> 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
|
## PR-00.4 — Depurar `prometeu-core`: remover execução e virar apenas compat layer
|
||||||
|
|
||||||
**Branch:** `pr-00-4-deprecate-prometeu-core`
|
**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
|
## PR-00.6 — Remover `prometeu-core` e migrar consumidores
|
||||||
|
|
||||||
**Branch:** `pr-00-6-remove-prometeu-core`
|
**Branch:** `pr-00-6-remove-prometeu-core`
|
||||||
Binary file not shown.
Loading…
x
Reference in New Issue
Block a user