Slice 4 Ship 2 parcial. RESUELVE el blocker real que difirió sc-service 3
sesiones (core2 yanked), pero DESCUBRE un segundo bloqueo arquitectural que
requiere decisión de David. Build verde, 213 tests, sin regresiones.
=== RESUELTO: core2 yanked (el muro de 3 sesiones) ===
sc-network-types 0.16 → cid ^0.9 (0.9.0 yanked) → core2 ^0.4 (0.4.0 yanked,
las no-yanked son 0.3.x que no satisfacen ^0.4). Cargo no auto-selecciona
versiones yanked → resolución fallaba. Era exactamente lo documentado en
chain_spec.rs Slice 3 que difirió sc-service.
Fix: vendorizado el .crate publicado de core2 0.4.0 (yanked pero descargable)
en vendor/core2-0.4.0/ + [patch.crates-io] core2 = { path = ... }. Una path
source es seleccionable independiente del estado yanked. El git source
(technocreatives/core2 master) resultó ser workspace ≤0.3.x, no servía.
=== DESCUBIERTO: crates.io consensus crates ≠ git tag API ===
Las crates sc-/sp- consensus PUBLICADAS (sc-consensus-aura 0.52.0 +
sp-consensus-aura 0.45.0) tienen API DISTINTA al git tag polkadot-stable2509-3
bajo el MISMO número de versión:
- git tag: sc_consensus_aura::standalone::slot_duration_at +
sp_consensus_aura::inherents::InherentDataProvider::from_timestamp_and_slot_duration
- crates.io: slot_duration_at en root + NO existe slot InherentDataProvider
(Slot no implementa el trait; Slot::from_timestamp toma 1 arg)
polkadot-sdk reusa números de versión con cambios git no publicados.
Construir un node service real requiere migrar TODO el stack sc-/sp- consensus
a git sources del tag — la misma cirugía duplicate-crate que golpeó pallet-revive
(Ship 2 v0.0.39). Decisión arquitectural para David.
Cambios:
- Cargo.toml: [patch.crates-io] core2 path vendor + sp-timestamp 39 + sp-blockchain 41
- vendor/core2-0.4.0/: crate vendorizado (yanked artifact original)
- node Cargo.toml: 13 sc-* + sp- consensus deps + jsonrpsee/rpc + core2 unblock dep
- node src/service.rs + rpc.rs: WIP escritos (verbatim stable2509-3 + 2 fixes API
crates.io), NO mod-declarados (preservados para siguiente fase)
- node src/main.rs: finding documentado, mods service/rpc neutralizados
Verificación:
- cargo check -p origin-chain-node: EXIT 0 (deps resuelven vía core2, mods off)
- cargo test --workspace: 213 verde, 0 fail, sin regresiones
- core2 0.4.0 + cid 0.9.0 ahora en Cargo.lock (vía path patch)
Próximo: decisión David — (A) migrar sc-/sp- consensus a git sources tag
stable2509-3 (real node, riesgo duplicate-crate) vs (B) mantener publicadas
(node service diferido a futura generación Substrate). Ver SLICE_4 plan §10.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2.9 KiB
core2
Ever wanted a Cursor or the Error trait in no_std? Well now you can have it. A 'fork' of Rust's std modules for no_std environments, with the added benefit of optionally taking advantage of alloc.
The goal of this crate is to provide a stable interface for building I/O and error trait functionality in
no_std environments. The current code corresponds to the most recent stable API of Rust 1.47.0.
It is also a goal to achieve a true alloc-less experience, with opt-in alloc support.
This crate works on stable with some limitations in functionality, and nightly without limitations by adding
the relevant feature flag.
This crate is std by default -- use no default features to get no_std mode.
Usage
[dependencies]
core2 = "0.3"
Add the crate, use the things you would usually want from std::io, but instead from core2::io, and
use core2::error::Error in place of std::error::Error.
Features
- std: enables
stdpass-throughs for the polyfilled types, but allows accessing the new types - alloc: enable aspects of the
ReadandWritetraits that requireallocsupport (WIP) - nightly: enables nightly-only features, such as
BufReaderandBufWriterwith const generic buffers.
Differences to std::io
- No
std::io::Error, so we have our own copy without anyOserror functions IoSliceand the*_vectoredfamily of functions are not implemented.BufReaderandBufWriterhave a different signature, as they now use a const generic bounded array for the internal buffer. (Requires nightly feature)
Other than items perhaps being entirely missing or certain functions unavailable on some traits, no function signatures have been changed.
Limitations
- Using the buffer types currently requires nightly due to the use of const generics.
- Using
copyor the buffer types withstdsupport currently requires nightly due to theinitializerAPI.
Where is it used?
All of the below are works in progress, but should help with demonstrating how to use this crate.
- thiserror_core2: fork of
thiserrorusing thecore2::error::Errortrait.
License
Licensed under either of
- Apache License, Version 2.0, (LICENSE-APACHE or http://www.apache.org/licenses/LICENSE-2.0)
- MIT license (LICENSE-MIT or http://opensource.org/licenses/MIT)
at your option.
Almost all of the code in this repository is a copy of the Rust language codebase with minor modifications.
For attributions, see https://thanks.rust-lang.org/.