redox-os issueshttps://gitlab.redox-os.org/groups/redox-os/-/issues2024-01-28T06:23:38Zhttps://gitlab.redox-os.org/redox-os/redox-path/-/issues/1Add more variants and parts to RedoxPath2024-01-28T06:23:38ZRon WilliamsAdd more variants and parts to RedoxPathProposed - Add the following variants to RedoxPath:
- Standard(RedoxReference) - a path that is absolute but has no scheme - interpreted as `/scheme/file/path`
- WithScheme(Scheme, RedoxReference) - a path with an explicit scheme
- Schem...Proposed - Add the following variants to RedoxPath:
- Standard(RedoxReference) - a path that is absolute but has no scheme - interpreted as `/scheme/file/path`
- WithScheme(Scheme, RedoxReference) - a path with an explicit scheme
- SchemeRoot - the literal path `/scheme`
This will help with stripping or adding `/scheme/file` as needed, and will simplify parsing the scheme (for the libc_scheme and Contain).https://gitlab.redox-os.org/redox-os/assets/-/issues/1Logo updates2024-01-27T23:23:14ZRon WilliamsLogo updatesWe need the following updates to the logo:
- The T-Shirt logos (black and white) are clipped at the right edge, so the S in OS is not completely round, this needs to be fixed
- The "logo" and "logo_small" logos are not the latest version...We need the following updates to the logo:
- The T-Shirt logos (black and white) are clipped at the right edge, so the S in OS is not completely round, this needs to be fixed
- The "logo" and "logo_small" logos are not the latest version of the logo and should be updated
- We need a dark mode (white on transparent) and a light mode (black on transparent) logo
- We need a non-transparent black-on-white logo
- There is a black and a white logo in the book that should be tracked in this repohttps://gitlab.redox-os.org/redox-os/redoxer/-/issues/10Append instead of overwrite RUSTFLAGS2024-01-26T20:02:04Zbjorn3Append instead of overwrite RUSTFLAGSOtherwise it isn't possible for the user to pass custom rust flags.Otherwise it isn't possible for the user to pass custom rust flags.https://gitlab.redox-os.org/redox-os/nonprofit/-/issues/2Intern Projects for GSoC or RSoC2024-01-26T18:38:41ZRon WilliamsIntern Projects for GSoC or RSoCFor GSoC, we should assume that our intern will have completed 3rd year undergrad, and who is a competent Rust programmer with some understanding of physical hardware, but may not have hands-on operating system experience. Project size s...For GSoC, we should assume that our intern will have completed 3rd year undergrad, and who is a competent Rust programmer with some understanding of physical hardware, but may not have hands-on operating system experience. Project size should be one of 90 hours (12 weeks spare time), 175 hours (12 weeks part time) or 350 hours (12 weeks full time). I think we should mainly request 350 hour projects, but Google is looking for us to request medium projects as well. We want projects that attract a range of interns, to engage the most competent (10x) people but not scare away people that are less experienced. Here are some suggestions. Feel free to edit or add here, use ~~strikethrough~~ to remove items.
GSoC recommends that the items be part of our regular suggestions to our contributors, so we should consider posting these projects on the CONTRIBUTING.md.
- Port a written-in-Rust web server to Redox. Get Redox to run in a VM (e.g. QEMU) on a cloud server, and enable Redox's website to be self-hosted. (low-hanging fruit, medium)
- Improve Redox's USB/HID support. (core, large)
- Help improve Redox's performance by developing end-to-end profiling tools and libraries, analyzing bottlenecks and helping implement optimizations. (exploratory, large)
- Implement "io_uring" for Redox's filesystem, RamFS and NVMe driver. (exploratory, large)
- Improve Redox's automated testing suite and continuous integration testing processes. (core, medium to large)
- Implement a user-space process manager that can safely modify process context information shared with the kernel. Implement the Session/Process Group/Process/Thread hierarchy. (exploratory, medium to large)
- Create a System Health profiling library, a GUI and a command-line interface to display activity levels for Redox's daemons and drivers. (peripheral, medium)
- Begin a port of WASM Rustix to Redox's written-in-Rust libc alternative, "relibc". Refactor relibc where needed to support both libc and Rustix interfaces. Implement additional functionality where feasible. (core, medium to large)
- Port a variety of Linux applications to Redox. This involves implementing functions in our libc alternative, "relibc" and possibly some GUI functionality. (core, medium to large)
- Perform a "survivability analysis" of Redox - What tasks can be killed and restarted, and still have Redox able to function? What will the effect on running applications be? What additional work needs to be done to improve survivability? Implement the proposed functionality and tooling. (exploratory, medium to large)https://gitlab.redox-os.org/redox-os/redox/-/issues/1427Wayland porting2024-01-23T20:45:03ZRibbonWayland portingThis issue will track how and what is needed to port Wayland to Redox.
The main difference between X11 and Wayland is the architecture and communication, on X11 you have a server and clients, on Wayland the server and client is one prog...This issue will track how and what is needed to port Wayland to Redox.
The main difference between X11 and Wayland is the architecture and communication, on X11 you have a server and clients, on Wayland the server and client is one program (the compositor), each Wayland compositor has the freedom to implement its rendering and input interfaces.
(In both display servers the user programs are clients)
### Porting Items
- [ ] Implement the Unix domain sockets
- [ ] Support for passing memfd or posix shared memory fd's over the socket
- [ ] Port libwayland
- [ ] Port cosmic-comp from COSMIC Desktop (Jeremy is doing that)
- [ ] Port Smithay
- [ ] Port wlroots (Sway and others)
- [ ] Port KWin from KDE Plasma
- [ ] Port Mutter from GNOMEhttps://gitlab.redox-os.org/redox-os/bootstrap/-/issues/1Link with relibc rather than using redox-exec directly2024-01-21T12:41:00ZJacob Lorentzon4ldo2@protonmail.comLink with relibc rather than using redox-exec directlyThis would simplify relibc's exec implementation significantly. Bootstrap would initialize an environment similar enough that it can call relibc_start directly, and continue running in `main`.This would simplify relibc's exec implementation significantly. Bootstrap would initialize an environment similar enough that it can call relibc_start directly, and continue running in `main`.https://gitlab.redox-os.org/redox-os/event/-/issues/3Feature: non-blocking event interface2024-01-17T18:44:58ZRon WilliamsFeature: non-blocking event interfaceA non-blocking event interface is required so applications can ensure all pending events have been addressed before returning. This is required by e.g. `epoll`.
Two possible implementations:
- `maybe_next` (or other name) would perform ...A non-blocking event interface is required so applications can ensure all pending events have been addressed before returning. This is required by e.g. `epoll`.
Two possible implementations:
- `maybe_next` (or other name) would perform a non-blocking check for events. The implementation could turn blocking off and then on, so that `next` continues to be blocking. Or the implementation could maintain state indicating if it is in blocking mode, and turn it on/off as required.
- `has_event` would maintain an event queue internally, reading up to the maximum number events (based on registered fds) whenever it blocks, and `has_event` would indicate if the event queue is empty.https://gitlab.redox-os.org/redox-os/event/-/issues/2Feature: Timeout2024-01-17T12:33:06ZRon WilliamsFeature: TimeoutSince many of the uses of the `redox_event` crate include timeout handling (it's often the only reason event multiplexing is required), it is proposed that a "timeout" interface be added to `redox_event`. Details TBD, but probably it sho...Since many of the uses of the `redox_event` crate include timeout handling (it's often the only reason event multiplexing is required), it is proposed that a "timeout" interface be added to `redox_event`. Details TBD, but probably it should just be an event with user_data indicating it's a timer event.https://gitlab.redox-os.org/redox-os/cookbook/-/issues/195Show the current commit hash of the recipe source when invoking the make targets2024-01-14T20:10:41ZRibbonShow the current commit hash of the recipe source when invoking the make targetsIt will show the current commit hash on the log to help the troubleshooting.It will show the current commit hash on the log to help the troubleshooting.https://gitlab.redox-os.org/redox-os/cookbook/-/issues/194Dynamic link relibc2024-01-13T17:41:29ZRibbonDynamic link relibcThe dynamic linking of relibc will avoid recompilation of recipes when new relibc changes are merged, what is blocking it is that our dynamic linking implementation has unfixed bugs.
### Current Behavior
You need to run these commands ...The dynamic linking of relibc will avoid recompilation of recipes when new relibc changes are merged, what is blocking it is that our dynamic linking implementation has unfixed bugs.
### Current Behavior
You need to run these commands to update relibc, all recipes and the image:
```sh
make pull
touch relibc
make prefix clean all
```
### Proposed Behavior
With a dynamic linking all recipes will use the `relibc` recipe, thus we reduce the relibc updating to one command:
```sh
make pull f.relibc r.relibc image
```
### Implementation
The relibc recipe will be forced to all recipes using the build system source code or the `[package]` section?
Currently the `[package]` seems to be useless.https://gitlab.redox-os.org/redox-os/redox/-/issues/1412Kernel and userspace separation policy2024-01-13T08:34:40ZRibbonKernel and userspace separation policyThis issue covers which components may be moved to userspace, or should continue stay in the kernel.
# Kernel
- CPU drivers - performance
- Memory manager - performance, and moving that to userspace is hard
- Context switch - core part...This issue covers which components may be moved to userspace, or should continue stay in the kernel.
# Kernel
- CPU drivers - performance
- Memory manager - performance, and moving that to userspace is hard
- Context switch - core part of the kernel
- Capability system - the kernel needs to implement at least the bare minimum to be able to isolate processes from each other
- Scheduler - performance
# Userspace currently
- cwd handling
- initfs
- fork and execv
- most drivers
- filesystem
- everything else
# Possible to move to userspace
- RTC driver
- path parsing (would require openat)
- the current namespace implementation (would also require openat)
- (part of) the file descriptor table (descriptors, not descriptions) - allows optimizing lseek, fcntl, POSIX pipes, etc.
- process management, including uid/gid/(not yet implemented:) supplementary groups
- application processor startup
- file descriptor allocation (where the lowest available number must be picked)
- virtual memory range allocationhttps://gitlab.redox-os.org/redox-os/cookbook/-/issues/192Implement the recipe category selection on "make distclean" and "make clean"2024-01-13T08:14:52ZRibbonImplement the recipe category selection on "make distclean" and "make clean"Add a way to select one recipe category to cleanup instead of all sources and binaries of the build system, for example:
- `make distclean wip` - Only clean the `wip` folder at `cookbook/recipes`
This feature is important to allow a gr...Add a way to select one recipe category to cleanup instead of all sources and binaries of the build system, for example:
- `make distclean wip` - Only clean the `wip` folder at `cookbook/recipes`
This feature is important to allow a granular storage space saving mechanism.https://gitlab.redox-os.org/redox-os/redox/-/issues/1408Port cosmic-comp2024-01-13T07:57:18ZRibbonPort cosmic-comp[cosmic-comp](https://github.com/pop-os/cosmic-comp) is the most complete Rust-written Wayland compositor of the world, being Rust it become the most easy Wayland solution for us, because we already have upstream Redox support on many cr...[cosmic-comp](https://github.com/pop-os/cosmic-comp) is the most complete Rust-written Wayland compositor of the world, being Rust it become the most easy Wayland solution for us, because we already have upstream Redox support on many crates.https://gitlab.redox-os.org/redox-os/redox/-/issues/1417Implement the "make prefix compiler" command2024-01-13T07:07:30ZRibbonImplement the "make prefix compiler" commandThe [proposal](https://gitlab.redox-os.org/redox-os/redox/-/issues/1389) to move the rustc source fetch to the `make prefix` command is redundant because it's called with `make all`, you would clone the rustc sources later.
My solution ...The [proposal](https://gitlab.redox-os.org/redox-os/redox/-/issues/1389) to move the rustc source fetch to the `make prefix` command is redundant because it's called with `make all`, you would clone the rustc sources later.
My solution is to add a specific command to fetch and build from sources (the CI server need this), see the current behavior:
- `bootstrap.sh` - rustc is a submodule, thus it clone the sources on each build system copy.
- `make prefix` - It download the toolchain binaries from the CI server and build relibc.
My proposed behavior:
- `make prefix compiler` - Active the `PREFIX_BINARY=0`, download the rustc/GCC sources and build the toolchain (`bootstrap.sh` don't fetch the rustc sources anymore).https://gitlab.redox-os.org/redox-os/redox/-/issues/1416Add an option to ignore recipe errors2024-01-13T07:04:44ZRibbonAdd an option to ignore recipe errorsThis option will ignore a recipe error and build the next recipe of the Cookbook configuration (`make all` and `make rebuild` commands).
Currently the CI server only update the packages if all recipes compiled successfully, it's time co...This option will ignore a recipe error and build the next recipe of the Cookbook configuration (`make all` and `make rebuild` commands).
Currently the CI server only update the packages if all recipes compiled successfully, it's time consuming and could delay important updates on recipes.
This is equivalent to "delta updates" but for CI, only the successfully compiled programs will be updated on the package repository.
It could be implemented on the `.config` file and the Cookbook configuration.https://gitlab.redox-os.org/redox-os/relibc/-/issues/178Rustify2024-01-12T17:50:49ZRibbonRustifyThis issue covers the relibc parts that benefit from using a Rustier implementation, in order to be less prone to memory unsafety and to some extent logic bugs.
- [ ] [Rusty error handling](https://gitlab.redox-os.org/redox-os/relibc/-/...This issue covers the relibc parts that benefit from using a Rustier implementation, in order to be less prone to memory unsafety and to some extent logic bugs.
- [ ] [Rusty error handling](https://gitlab.redox-os.org/redox-os/relibc/-/issues/176)
- [ ] [Rust's libm port](https://gitlab.redox-os.org/redox-os/relibc/-/issues/154)
- [x] dlmallochttps://gitlab.redox-os.org/redox-os/redox/-/issues/1364Request to renew certificate for static.redox-os.org to fix docker run commands.2024-01-12T14:02:17ZKarl PothastRequest to renew certificate for static.redox-os.org to fix docker run commands.Hello - can we get the static.redox-os.org cert renewed once again please? The docker run commands to load redox interactively are failing.
Should be the same fix as this issue :
https://gitlab.redox-os.org/redox-os/redox/-/issues/1311
...Hello - can we get the static.redox-os.org cert renewed once again please? The docker run commands to load redox interactively are failing.
Should be the same fix as this issue :
https://gitlab.redox-os.org/redox-os/redox/-/issues/1311
thank you!
Karl Pothast
-----------------------------------------------------------------------------------
$ docker run --privileged --cap-add MKNOD --cap-add SYS_ADMIN --device /dev/fuse \
-e LOCAL_UID="$(id -u)" -e LOCAL_GID="$(id -g)" \
-v redox-"$(id -u)-$(id -g)"-cargo:/usr/local/cargo \
-v redox-"$(id -u)-$(id -g)"-rustup:/usr/local/rustup \
-v "$(pwd):$(pwd)" -w "$(pwd)" --rm redoxos/redox make fetch all
![image](/uploads/1fbcbfa5893e9f4e6de5582b83600b7c/image.png)https://gitlab.redox-os.org/redox-os/redox/-/issues/1247redox: convert to target_family unix2024-01-12T13:56:19ZJeremy Sollerredox: convert to target_family unixRust issue: https://github.com/rust-lang/rust/issues/60139
Pull requests:
- https://github.com/rust-lang/libc/pull/1332
- https://github.com/rust-lang/rust/pull/60547
Changes:
- https://gitlab.redox-os.org/redox-os/rust/compare/redox-...Rust issue: https://github.com/rust-lang/rust/issues/60139
Pull requests:
- https://github.com/rust-lang/libc/pull/1332
- https://github.com/rust-lang/rust/pull/60547
Changes:
- https://gitlab.redox-os.org/redox-os/rust/compare/redox-2019-04-06...redox-unix-2019-04-06
- https://gitlab.redox-os.org/redox-os/atty/compare/master...redox-unix
- https://gitlab.redox-os.org/redox-os/liblibc/compare/redox...redox-unix
- https://gitlab.redox-os.org/redox-os/mio/commit/439a559b2aa734e0970d37b3375889a57a465360
- https://gitlab.redox-os.org/redox-os/net2-rs/compare/master...redox-unix
- https://gitlab.redox-os.org/redox-os/pb/compare/master...redox-unix
- https://gitlab.redox-os.org/redox-os/platform-info/compare/master...redox-unix
- https://gitlab.redox-os.org/redox-os/ring/compare/master...redox-unix
- https://gitlab.redox-os.org/redox-os/tar-rs/compare/master...redox-unix
- https://gitlab.redox-os.org/redox-os/tempfile/compare/master...redox-unix
- https://gitlab.redox-os.org/redox-os/termsize/compare/master...redox-unix
- https://gitlab.redox-os.org/redox-os/time/compare/master...redox-unix
Changes with additional crate patching:
- https://gitlab.redox-os.org/redox-os/redox/compare/master...redox-unix
- https://gitlab.redox-os.org/redox-os/cookbook/compare/master...redox-unix
- https://gitlab.redox-os.org/redox-os/coreutils/compare/master...redox-unix
- https://gitlab.redox-os.org/redox-os/extrautils/compare/master...redox-unix
- https://gitlab.redox-os.org/redox-os/drivers/compare/master...redox-unix
- https://gitlab.redox-os.org/redox-os/ion/compare/master...redox-unix
- https://gitlab.redox-os.org/redox-os/logd/compare/master...redox-unix
- https://gitlab.redox-os.org/redox-os/netstack/compare/master...redox-unix
- https://gitlab.redox-os.org/redox-os/netutils/compare/master...redox-unix
- https://gitlab.redox-os.org/redox-os/orbital/compare/master...redox-unix
- https://gitlab.redox-os.org/redox-os/orbterm/compare/master...redox-unix
- https://gitlab.redox-os.org/redox-os/orbutils/compare/master...redox-unix
- https://gitlab.redox-os.org/redox-os/userutils/compare/master...redox-unix
- https://gitlab.redox-os.org/redox-os/uutils/compare/master...redox-unixJeremy SollerJeremy Sollerhttps://gitlab.redox-os.org/redox-os/redox/-/issues/1418Multiseat support2024-01-12T12:57:21ZRibbonMultiseat supportA [multiseat](https://en.wikipedia.org/wiki/Multiseat_configuration) device is a computer with multiple ports for multiple peripherals linked to independent users of the operating system.
This issue will cover the implementation of this...A [multiseat](https://en.wikipedia.org/wiki/Multiseat_configuration) device is a computer with multiple ports for multiple peripherals linked to independent users of the operating system.
This issue will cover the implementation of this use case.
### Conditions
- Each user files, processes and devices must be isolated from other users.
- An user can't read the framebuffer of other user.
- An user can't use a wrong device.
### Proposal
(Needs more brainstorming)
- Each "seat" is a workspace for a monitor and HID devices connected to a USB hub.
- Each monitor will have a TTY with a login screen (start `orblogin` if available).
- Follow the USB hub ports position to avoid wrong device allocation.
- Use the TTY number of the monitor to assign devices.https://gitlab.redox-os.org/redox-os/redox/-/issues/1426Build fails if OS is built in a directory containing spaces2024-01-10T21:36:37ZJacob SchneiderBuild fails if OS is built in a directory containing spacesThis is not super serious as in the UNIX world, this tends to be uncommon anyway, but I noticed that the build failed on due to a missing file at `/some/path/truncated` where the last path fragment was split at the space character.This is not super serious as in the UNIX world, this tends to be uncommon anyway, but I noticed that the build failed on due to a missing file at `/some/path/truncated` where the last path fragment was split at the space character.