Autor Tema: OodleForge v34.1 - Precompresor de búsqueda exacta OodleLZ (código abierto)  (Leído 1638 veces)

Fl0ppy

  • Administrador
  • Usuario Héroe
  • *****
  • Mensajes: 10518


Quote (selected)
OodleForge es un motor de archivo en C++ de alto rendimiento diseñado para la reconstrucción exacta, byte a byte, de datos comprimidos con Oodle, con seguridad criptográfica AES-256 integrada.

Desarrollado tras 45 días de trabajo intensivo en hardware antiguo (Core 2 Quad Q6600, 8 GB de RAM), OodleForge es un ejemplo magistral de ingeniería de sistemas pragmática, que logra equilibrar una E/S asíncrona agresiva, una reconstrucción precisa de los datos y la seguridad criptográfica bajo severas limitaciones de recursos.
Siempre que pasa igual sucede lo mismo



Fl0ppy

  • Administrador
  • Usuario Héroe
  • *****
  • Mensajes: 10518
OodleForge v34.1 - Precompresor de búsqueda exacta OodleLZ (código abierto)
« Respuesta #1 en: 29 de Junio de 2026, 02:16:17 pm »
Avance de la 33.4, ahora ya funciona bajo linux de manera nativa, adiós a wine  :ouo:

Quote (selected)
Linux
ENC [99.97%] Blk: 8521 [E:8509 F:12] | 5.58 MB/s | Time: 00:01:24 | ETA: 00:00:00 | Size: 876.01 MB
--- Encoder Processing Metrics ---
Input File Size:        472.88 MB
Processed Output Size:  876.92 MB
Exact Matches: 8523 (99.86%)
Full Fails:    12
Methods Used: 8+9
Levels Used:  4
Total Duration:    00:01:25


Wine
ENC [100.00%] Blk: 8530 [E:8413 F:117] | 0.51 MB/s | Time: 00:15:35 | ETA: 00:00:00 | Size: 871.28 MB
--- Encoder Processing Metrics ---
Input File Size:        472.88 MB
Processed Output Size:  871.65 MB
Exact Matches: 8418 (98.63%)
Full Fails:    117
Methods Used: 8+9
Levels Used:  4
Total Duration:    00:15:35
Siempre que pasa igual sucede lo mismo



Fl0ppy

  • Administrador
  • Usuario Héroe
  • *****
  • Mensajes: 10518
Re:OodleForge v34.1 - Precompresor de búsqueda exacta OodleLZ (código abierto)
« Respuesta #2 en: 24 de Julio de 2026, 01:55:05 pm »


Quote (selected)
================================================================================
OodleForge v34.1 Changelog
Build Date: July 24, 2026
Focus: Extreme Memory Discipline, SIMD Hot-Path Optimization, Cryptographic Type Safety, and Bulletproof Malicious File Resistance.
================================================================================

## 🛡️ Core Stability & Security Hardening
✅ FIX #1: MinGW `winpthread` TLS Memory Leak Workaround
- Eradicated all `thread_local std::vector` usage across `common.cpp`, `encode.cpp`, and `reconstruct.cpp`.
- Introduced `ReusableBufferPool` and `PooledBuffer` RAII wrappers to bypass the known MinGW static-linking bug where TLS destructors are never called, preventing bounded memory leaks during ThreadPool teardown.
- Files: common.h, common.cpp, encode.cpp, reconstruct.cpp

✅ FIX #2: Cryptographic Bridge Type Safety (Opaque Pointer Pattern)
- Replaced unsafe `void*` AES context pointers with an incomplete struct `struct AES_ctx;` and a custom `AESContextDeleter`.
- Enforced the Rule of Five on `BlockScanner` to guarantee the compiler never attempts to instantiate the `unique_ptr` destructor in translation units lacking the complete `AES_ctx` definition.
- Files: common.h, common.cpp

✅ FIX #3: `BlockScanner::ensure_window` Overflow & Bounds Hardening
- Replaced vulnerable addition checks with safe subtraction inequalities to prevent 64-bit integer wrap-around on malicious file offsets.
- Added strict clamping to all `pread` requests to mathematically guarantee zero out-of-bounds reads.
- Files: common.cpp

✅ FIX #4: `WalkOodleChain` Infinite Loop & Thrashing Prevention
- Implemented strict sane sizing clamps: Rejects chunks > 8 MB or < 16 bytes to prevent I/O thrashing on deceptive filler structures.
- Removed the false-positive-prone `0x00080005` "Magic Killer" escape valve.
- Files: common.cpp

✅ FIX #5: `write_gap` Infinite Loop Protection
- Added a zero-read safety counter to prevent infinite CPU spinning if `pread` unexpectedly returns 0 (e.g., file truncation mid-read).
- Files: common.cpp

## 🚀 Performance & SIMD Upgrades
• AVX2 Register-Level OR Optimization
- Refactored `find_next_magic()` to perform bitwise ORs (`_mm256_or_si256`) *inside* the SIMD registers before extracting the mask with `_mm256_movemask_epi8`.
- Reduces General Purpose Register (GPR) pressure, preserves exact spatial byte identity, and compiles to a tighter assembly loop.
- Files: common.cpp

• Zero-Allocation Hot-Path in `extract_next_block`
- Replaced repetitive 4MB heap allocations with the new `ReusableBufferPool`. The decompression buffer is now allocated exactly once per process and recycled indefinitely, completely eliminating heap fragmentation on the scanner's hot path.
- Files: common.cpp

• Controlled Magic Byte Skip Heuristic
- Capped `skip_to_next_magic` search window to 16 bytes. If no magic byte is found within the safe window, the scanner advances by exactly 1 byte, mathematically guaranteeing that no legitimate Oodle chain is skipped.
- Files: common.cpp

## 🛠️ Modern C++ & Compilation Fixes
• `Result<T>` Ref-Qualified Move Semantics
- Upgraded `Result<T>::get_value()` to use C++ ref-qualifiers (`&`, `const &`, `&&`), enabling safe O(1) move extraction for large payloads without triggering GCC/MinGW overload resolution ambiguities.
- Files: common.h

• `ThreadPool::enqueue` C++17 Syntax
- Replaced verbose `typename std::invoke_result<F>::type` with the C++17 alias `std::invoke_result_t<F>`, eliminating template parsing ambiguities in strict MinGW/GCC environments.
- Files: common.h
Siempre que pasa igual sucede lo mismo