这是indexloc提供的服务,不要输入任何密码
Skip to content

core:os tracking issue #4710

@laytan

Description

@laytan

We are nearing the replacement of core:os, this issue outlines todos and nice to haves.

Todos:

Targets supported in core:os but not yet in core:os/os2:

  • wasi (os/os2: wasi target support #4716)
  • js - just os.write is implemented, maybe it should just be dropped entirely for os2
  • haiku - should be pretty easy to use the posix implementation at first, can go "native" later

Non blocking but can have api consequences:

  • buffered file mode/flag (needs testing to see if it's beneficial)
  • Jeroen: Virtual File System - file possibly backed by not actual files

Packages that use core:os and need to be updated:

  • core:compress/gzip

  • core:crypto

  • core:encoding/csv

  • core:encoding/hxa

  • core:encoding/ini

  • core:encoding/xml

  • core:flags

  • core:fmt (JS impl needs rewrite to not use core:os at all)

  • core:image/bmp

  • core:image/netpbm

  • core:image/png

  • core:image/qoi

  • core:image/tga

  • core:image

  • core:log

  • core:math/big

  • core:mem/virtual

  • core:net

  • core:odin/parser

  • core:path/filepath

  • core:prof/spall

  • core:testing

  • core:text/i18n

  • core:text/regex

  • core:text/table

  • core:time/timezone

  • core:unicode/tools

  • tests/core/encoding/hxa

  • tests/core/flags

  • tests/core/io

  • tests/documentation

  • vendor:fontstash

  • vendor:libc

  • vendor:opengl

  • odin-lang/examples repo needs to be updated

Nice to have, but not blocking the replacement of core:os:

  • more tests
  • docs additions, dir.odin, file.odin, etc. don't have any docs
  • docs unification, doc style differs between files and procs
  • linux process_info should query /proc/pid/exe instead of the way it's done now to get executable paths
  • netbsd, openbsd, freebsd targets implementation for _process_info_by_pid, _process_list, _process_open, _process_handle_still_valid, _process_state_update_times for full process API coverage (decided to make non blocking because it is a new API)
  • current_executable_path(allocator: runtime.Allocator) -> (string, Error) returning the full absolute executable path of the program, useful for loading things relative to this path. You can already do this in a round about way with: current_process_info({.Executable_Path}, context.allocator) but a more direct way with the native APIs for each target would be nice (os/os2: add get_executable_path and get_executable_directory #4733)
  • wrapper api over the process API that handles the details of processes and just allows easy communication, similar to this idea: https://gist.github.com/laytan/68be38614d9274663a48fd3d710fefc2
  • a heap allocator that does not rely on any system libraries, ideally this goes into base: though, so it can be the default allocator in general (Add native lock-free dynamic heap allocator #4749)
  • core:testing to replace os2.stdout and os2.stderr with an implementation that synchronises between tests (currently writing to stdout or stderr in tests doesn't work well because the terminal renders progress and clears it out)
  • Flysand: There is no procedure to free a file handle without closing it (which can be used in tandem with new_file, if i.e. a library returned a handle, and that library is responsible for closing the file).
  • Flysand: It would be nice to have unlink :: remove alias.

After replacement the following can be closed:

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions