You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
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)
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
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
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
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)
Virtual File System, working similarly to allocators, in that you call it with a Mode, instead of having to have vtable with all of stat , open , close , read ,write, etc.
Pretty sure I messed up files a little bit. I (or someone else) will have to rewrite the documentation at some point for files. process.odin should be the most recent and the most correct style, but still not ideal.
Virtual File System, working similarly to allocators, in that you call it with a Mode, instead of having to have vtable with all of stat , open , close , read ,write, etc.
I put it on the list under "non blocking but can have api consequences"
We are nearing the replacement of
core:os
, this issue outlines todos and nice to haves.Todos:
env_posix.odin
has a bunch ofNOTE(laytan):
comments outlining potential improvementsIMPORTANT NOTE
saying the package is a mockup needs to be removed fromdoc.odin
write
on linux needs to loop until everything is written, just like windows and posix implementationsMAX_RW
thing other implementations do but afaik it does have the same restrictionremove
on posix needs to handle directories, just like the other implementations (it already did, whoops)File_Flag
cases should be removed,.Sparse
,.Unbuffered_IO
core:path
needs to be looked over and possibly removed/merged into os2Targets supported in
core:os
but not yet incore:os/os2
:os.write
is implemented, maybe it should just be dropped entirely for os2Non blocking but can have api consequences:
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 usecore: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
:dir.odin
,file.odin
, etc. don't have any docs_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 nicebase:
though, so it can be the default allocator in generalcore:testing
to replaceos2.stdout
andos2.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)After replacement the following can be closed:
core:os
packageread_entire_file_xxx
procedures don't work on/proc
filesystem even if on a Linux system #4264The text was updated successfully, but these errors were encountered: