silk/native_filesystem
Profiles: aarch64-apple-darwin, aarch64-unknown-linux-gnu, x86_64-unknown-linux-gnu.
Selected native filesystem declarations and affine descriptor ownership.
When to use
Use this boundary to implement OsFileSystem. Portable code requires FileSystem.
Details
Native records, flags, error capture and descriptor-relative traversal are selected source. Handles own one close obligation; explicit close reports failure and Drop preserves an earlier failure during structured unwinding. Native members are absent on unsupported supplies.
Import as NativeFileSystem with import silk.native_filesystem { NativeFileSystem }.
Public declarations: 3.
FileHandle
pub struct FileHandleAn affine descriptor with one close obligation, transferred by consuming operations.
DirectoryHandle
pub struct DirectoryHandleAn affine directory stream retaining an owned name across an insufficient-buffer retry.
Implementation Drop for DirectoryHandle
impl Drop for DirectoryHandleNativeFileSystem
pub struct NativeFileSystemDescriptor-relative filesystem operations with source-owned error and lifetime policy.
Associated function NativeFileSystem.openFile
pub effect<'env> fn openFile<'life0: 'env, 'life1: 'env, 'env>(root: &'life0 [u8], path: &'life1 [u8], writing: bool, operation: i32) -> FileHandle ! FileErrorOpens and validates a regular file; writes truncate only after successful kind inspection.
Associated function NativeFileSystem.openDirectory
pub effect<'env> fn openDirectory<'life0: 'env, 'life1: 'env, 'env>(root: &'life0 [u8], path: &'life1 [u8], operation: i32) -> DirectoryHandle ! FileErrorOpens a directory and transfers its descriptor to a stream only after fdopendir succeeds.
Associated function NativeFileSystem.inspect
pub effect<'env> fn inspect<'life0: 'env, 'life1: 'env, 'life2: 'env, 'life3: 'env, 'env>(root: &'life0 [u8], path: &'life1 [u8], outputKind: &'life2 mut i32, length: &'life3 mut usize, operation: i32) -> () ! FileErrorInspects a no-follow child and returns regular-file or directory metadata.
Associated function NativeFileSystem.command
pub effect<'env> fn command<'life0: 'env, 'life1: 'env, 'env>(root: &'life0 [u8], path: &'life1 [u8], command: i32, operation: i32) -> () ! FileErrorCreates or removes one normalized child, rejecting replacement through symlinks.
Associated function NativeFileSystem.readFile
pub effect<'env> fn readFile<'life0: 'env, 'life1: 'env, 'env>(handle: &'life0 mut silk/native_filesystem.FileHandle, output: &'life1 mut [u8], operation: i32) -> usize ! FileErrorReads one checked prefix, retrying EINTR and leaving the remaining initialized tail unchanged.
Associated function NativeFileSystem.writeFile
pub effect<'env> fn writeFile<'life0: 'env, 'life1: 'env, 'env>(handle: &'life0 mut silk/native_filesystem.FileHandle, input: &'life1 [u8], operation: i32) -> () ! FileErrorCompletes initialized bytes, advancing after positive counts and preserving failure prefixes.
Associated function NativeFileSystem.next
pub effect<'env> fn next<'life0: 'env, 'life1: 'env, 'life2: 'env, 'life3: 'env, 'life4: 'env, 'env>(handle: &'life0 mut silk/native_filesystem.DirectoryHandle, output: &'life1 mut [u8], count: &'life2 mut usize, required: &'life3 mut usize, outputKind: &'life4 mut i32, operation: i32) -> bool ! FileErrorCopies the next owned byte name, retaining it when output capacity is insufficient.
Details
False reports required capacity without advancing; true with zero count is latched EOF.
Associated function NativeFileSystem.createUnique
pub effect<'env> fn createUnique<'life0: 'env, 'life1: 'env, 'life2: 'env, 'life3: 'env, 'life4: 'env, 'life5: 'env, 'life6: 'env, 'env>(root: &'life0 [u8], path: &'life1 [u8], prefix: &'life2 [u8], counter: &'life3 mut u64, output: &'life4 mut [u8], count: &'life5 mut usize, required: &'life6 mut usize, operation: i32) -> bool ! FileErrorExclusively creates one predictable counter name, retrying at most 128 collisions.
Associated function NativeFileSystem.closeFile
pub effect<'static> fn closeFile(value: FileHandle, operation: FileOperation) -> () ! FileErrorConsumes a file and reports its one close attempt, without retrying EINTR.
Associated function NativeFileSystem.closeDirectory
pub effect<'static> fn closeDirectory(value: DirectoryHandle, operation: FileOperation) -> () ! FileErrorConsumes a directory stream and reports its one closedir attempt.