-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathCHANGELOG.txt
257 lines (242 loc) · 19.9 KB
/
CHANGELOG.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
ULOS 21.05-pre1:
* First pre-release.
* Supports booting from managed filesystems.
* Has a relatively straightforward installation process.
* All core functionality should be mostly stable.
ULOS 21.05-pre2:
* Second pre-release.
* Better-optimized MTAR loader.
ULOS 21.05-pre3:
* Third pre-release.
* Optimized the MTAR loader slightly further.
* Fixed a typo in 'login'.
* 'passwd' can now remove users.
* New coreutil: 'less' pager.
* New coreutil: 'tfmt' text formatter.
ULOS 21.06-pre4:
* Fourth pre-release.
* There are now manual pages for all core utilities and libraries.
* A long-standing TTY bug has been fixed - long lines ending at the edge of the screen should now wrap properly.
* There is now a 'text.wrap' function, which wraps text and ignores (but preserves) VT100 escape sequences while doing so.
ULOS 21.06-pre5:
* Fifth pre-release.
* The Cynosure kernel now features opt-out pre-emptive multitasking, through hijacking load().
* There is now a MOTD in /etc/motd.txt, which /bin/login will display on logging in.
* LSH supports semicolon-separated commands, though the implementation leaves much to be desired.
* Added a mostly-complete LuaFileSystem compatibility layer.
* LSH's `into' builtin now supports executing programs directly, if passed the '-p' option.
ULOS 21.06-pre6:
* Sixth pre-release.
* Cynosure's pre-emptive multitasking has been significantly improved.
* Fixed a typo in the 'futil' library's manual page.
ULOS 21.06-1.0:
* First release.
* The ULOS Package Manager is implemented and working.
* Cynosure now has networking support. Currently, this is only implemented for the internet card, but support for other forms of networking can and will be transparently added in the future.
* Cynosure's buffer implementation now behaves as expected when reading 0 bytes from a file.
* Fixed a small bug with Cynosure's pre-emptive multitasking implementation.
* install: There is now an option to use UPM for installation, rather than copying from the live media. Only available if an internet card is installed.
* mtar: The MiniTel ARchive library now properly unarchives files, and the behavior of the unarchiver function has as a result changed slightly. (Unarchiver code credit: Izaya)
* There are several new manual pages (man, tfmt, upm, and UPM's included libraries config and serializer).
ULOS 21.06-r1.1:
* Release 1.1.
* There is now a readline() library for improved line editing, and an accompanying manual page.
* The shell and the Lua REPL now both use the new readline() library.
* There have been numerous fixes and additions to UPM:
> The `search` command now indicates whether the specified package is installed.
> There is now a `list` command, which lists all installed packages in no particular order.
> There is now an `upgrade` command, which upgrades all out-of-date packages on the system.
* Fixed a very small bug with the Cynosure VT100 emulator wherein cursor wrapping did not work properly in one very specific case.
* Added the `sv` command for service management, and a corresponding manual page.
* Merged the `coresvc` and `refinement` packages.
* Refinement now sets `__metatable` on the table returned from `sv.list()`.
* Added the `uname` command, identical to `print(_OSVERSION)`.
ULOS 21.06-r1.2:
* Release 1.2.
* Added category selection ('installed', 'all', and per-repository) to UPM's 'list' command.
* LSH's program exit status filter has been improved slightly; it will no longer print 'exited' or blank exit statuses.
* UPM now has a copyright notice in its help text.
* UPM now automatically resolves package dependencies.
* UPM's package installation process has been refined: it will now resolve dependencies, *then* download packages, *then* install them. Previously it would download and install each package individually.
* A piece of debug code that could cause unexpected behavior has been removed from Cynosure.
* Cynosure's TTY cursor can now be toggled.
* Syntax highlighting is now included in the 'tle' package.
* /etc/motd.txt is now included in the 'coreutils' package.
* The release image now includes an 'installed.list', so that a system installed using the offline method will be upgradeable using UPM.
* A small bug with the readline() library has been fixed.
* Added a basic 'more' pager.
ULOS 21.07-r1.3:
* Release 1.3.
* There is now an optional `getgpu()` function, for getting the GPU bound to a specific TTY.
* Several breaking bugs in Cynosure's kernel argument parsing code have finally been fixed.
* Cynosure now features proper hostname support in its network API.
* Refinement has gained support for loading and saving the hostname from /etc/hostname during startup and shutdown.
* The /etc/rf/ttys script now sets {stdin,stdout,stderr}.tty to the ID of the attached TTY; for example, 2. Previously it would be set to `true`.
* UPM's `search` functionality now matches on patterns, rather than requiring the full package name; this does not impact installation or removal.
* There is now a `hostname` utility for getting and setting the system hostname.
* There are now manual pages for `more`, the `sysfs`, `getgpu`, the `network` API, and `edit`.
* Manual pages can now be viewed in a web browser at https://oz-craft.pickardayune.com/man/ulos.
* Typos in a few manual pages have been fixed.
* UPM has been split into a library and a command; this is entirely for speed reasons and the library is not intended for use in other programs.
* The `config` and `serializer` libraries are now in the `corelibs` package rather than the `upm` package, as they are now dependencies of Refinement.
* The `config` library's `bracket` type now saves entries in the order they were loaded. This has the downside of making new entries slightly more complicated to create.
* The `termio` library now has a `cursorVisible()` function, for setting cursor visibility.
* `sv.list()` now behaves correctly.
* The `find` command now prints usage to the standard error if no arguments are specified.
ULOS 21.07-r1.4:
* Release 1.4.
* UPM now displays progress bars while downloading packages, as well as the total download size before package installation.
* Fixed a bug with the Cynosure `sysfs`'s TTY handler not properly flushing the TTY stream.
* Cynosure's `sysfs` now exports handle templates' `flush` functions where it previously did not.
* `rm` no longer chokes under certain situations.
* The Cynosure Loader's default kernel flags now reduce kernel output during boot.
* Cynosure's terminal emulator now does not act on ctrl-D while raw mode is enabled. The old behavior was considered a bug.
* The `sv` command can now add, remove, and control autostart of services.
> The `sv` API has functions for this accordingly.
* The `package.protect` function has been fixed to that `pairs` and `ipairs` behave properly on the protected table.
* The `config` library's `bracket` preset now saves `nil` values.
* UPM will now remove files that a package stops owning after an upgrade.
* The Cynosure TTY's maximum buffer size is now 2048 bytes. This may change or become configurable in the future.
ULOS 21.08-r1.5:
* Release 1.5.
* Cynosure's `os.exit()` function now behaves properly.
* `readline` now accepts the `noexit` option to not exit when ctrl-D is pressed.
* `readline` now accepts a `complete` function, which is given the current text buffer and a session ID and expected to make something of it.
* The default task time limit is now 0.1s, down from 0.5s. This does not have a noticeable impact on performance and improves responsiveness while programs loop.
* A few improvements have been made to the Lua REPL.
* Cynosure now has a `sound` API.
* Fixed a bug with Cynosure's `load()` wrapper pre-emption scheme causing `coroutine.yield()` to misbehave.
* There is a new kernel option, `no_wrap_coroutine`, which disables Cynosure's `coroutine` wrapper for userspace only.
* `\27[0m` now properly resets the TTY's foreground and background colors.
* `io.popen` now sometimes works, but should not be relied upon.
* `/usr/lib` is now in the default package path.
* There is a new installer, `installer`, and the old one has been moved to `minstall`.
* Both installers now assist in the adding of users, creation of home directories, and hostname setup.
* There are two new commands, `mkpasswd` and `hnsetup`, which should only be used during system installation.
* Cynosure now provides a `tty` interface for using the kernel's TTY driver on userspace-provided GPU objects.
* Cynosure's terminal emulator supports an "xoff" mode, where all input is suspended. Use with caution.
* The `getgpu` function has been moved into the `tty` API. Programs will need to be updated to reflect this.
* Cynosure's terminal emulator now supports `\27[0;X;Y;W;Hg` to clear only specific areas of the screen. More GPU functions may be added in the future.
* The `gpuproxy` API is now its own package.
* There is now an option for the release image to autostart the installer. Download `release_noautostart.lua` if you do not want the installer to autostart; it can still be autostarted by running `installer` from the command line.
* The default Message Of The Day has been changed.
ULOS 21.08-r1.6:
* Release 1.6.
* The ULOS Web Site is now live at https://ocawesome101.github.io/ulos.
* The ULOS Window Manager, `uwm`, is now available as a package in the `extra` repository.
* The Open System's GUI has been mostly ported as the `osgui` package.
* A bug with the Cynosure terminal where signals would still be sent even if `XOFF` was set has been fixed.
* Programs can now detect if they're running with a `gpuproxy`-created proxy, with the `isProxy` field.
* The Cynosure Loader now calls loaded files with `xpcall()` for traceback support.
* A few bugs with `gpuproxy`'s `buffer` wrapper have been fixed.
* Cynosure's `loadfile()` now behaves properly when given an environment.
* The `extra` repository is now included in UPM's default configuration.
* Cynosure's `process.kill` function now behaves correctly.
* There is finally a `mv` command.
* Fixed a bug with Cynosure's `load()` wrapper wherein signals would sometimes be either duplicated or not sent.
* The Cynosure TTY implementation now behaves as expected when given `\27[nnG`.
* Refinement's `sv.list()` now returns more data.
* Updated `sv` to reflect this.
* The `require()` function has been moved from Refinement into Cynosure. This enables running any userspace software as init with the `init=PATH` kernel argument.
* Some scheduler weirdness with process environments has been sorted.
* The IO stream passed to `init` now has the `tty` field set.
* Cynosure's TTY now supports negative numbers as arguments.
* Added `\27[1;XX;YY;WW;HH;RX;RYg` as an interface to `gpu.copy`.
* Cynosure now supports displaying a boot splash on startup.
* Refinement's logger has been updated to look slightly nicer with Cynosure's bootsplash enabled - the standard logger will be used if the bootsplash is not enabled.
* The kernel command line is now accessible through `/sys/cmdline`.
* Cynosure's `users.usermod` function now behaves correctly.
* The `passwd` command will only prompt for a password if the user being modified is not the current user OR if no arguments have been passed, but not, for example, if changing the shell.
* Cynosure's TTY now has 24-bit color support through the `\27[{3,4}8;2;RRR;GGG;BBBm` extension.
* `login` now prints the value of `_OSVERSION` and the TTY ID rather than just `Welcome to ULOS.` since the first line of the MOTD is `Welcome to ULOS!`.
* Fixed a bug with the Cynosure TTY's output line buffer where it would sometimes not flush properly.
* Cynosure's TTY should now mostly support UTF-8 input and output.
* USysD has replaced Refinement as the default init system.
* Cynosure's `io.lines()` function now behaves as expected.
* The Cynosure TTY's "XOFF" mode now disables output as well as input.
* Cynosure's `users.exec_as` function now returns the PID of the process it spawned if the `wait` argument is not specified. It also now supports a sixth argument, `stdio`, which sets *all* input and output streams of the spawned process to the provided stream. Finally, a password is now required only if the user calling the function is not `root`.
* Cynosure's `io` library now canonicalizes paths. This is an improvement over the previous system that required a userspace hack.
* There is now a `quit` signal in `process.signals`.
* There is now a file `/etc/os-release` containing a set of key-value pairs describing the OS. This is in a similar format to the standard Linux file of the same name.
* There is now an official ULOS logo.
* There is now an official Cynosure logo.
* There is now a standalone ULOS installer for OpenOS using a badly ported version of UPM, as well as a script to download and boot the latest release image.
ULOS 21.09-r1.7:
* Release 1.7.
* Cynosure's TTY now properly supports 24-bit color.
* The `ANSI_COLOR` field in `/etc/os-release` has been updated to `38;2;102;182;255`; it was previously `96`.
* A bug with Cynosure's `load()` wrapper where a `for` specifier would sometimes not be recognized has been fixed.
* Writing to a broken pipe now sends the `SIGPIPE` signal to the offending process.
* The TTY's signal sending logic has been fixed.
* There is a new shell available, `bsh`. Its design is similar to the Bourne shell.
* The `sh` script now points to whatever the user's shell is.
* The old `sh` bourne-like shell has been removed.
* Cynosure's managed filesystem driver no longer errors when passed an empty file path.
* The `HOSTNAME` and `PWD` environment variables are now set by default.
* The default shell has changed to `/bin/sh`.
* Added `/bin/echo`, which behaves exactly as it should.
* The ULOS Package Manager now checks for conflicting packages during installation.
* `io.popen` should behave as expected now.
* `network:read()` should work properly now.
* `FILE*` streams are now unbuffered if the buffer mode is set to `pipe` as well as if it is set to `none`.
* All of a process's I/O streams are now properly closed when a process exits, unless they point to a TTY.
* `/sys/dev/null` now exists as an empty file into which all that is written disappears.
* `/bin/login` now passes `--login` to the shells it executes.
* `readline()` now accepts an `exit` option to set the function it calls when Control-D is pressed.
* `ls` now exits with a status of 1 if a file or directory is not found, rather than ignoring it.
* Cynosure's TTY colors now use the full 16 palette colors available for exact color matching.
* Cynosure now supports color profiles and custom colors for the TTY. This allows switching between terminal palettes with a kernel argument. These themes are: The default (1), the Breeze theme from Konsole (2), Gruvbox (3), Gruvbox Light (4), PaperColor light (5), and Pale Night (6).
* Cynosure's `loadfile()` now supports shebangs. This eliminates the need for the shell to support them.
* Cynosure now adds support to `checkArg` for the first `n` argument to be a string. This is useful for functions where arguments are provided in a table.
* The coreutils' `lua` REPL now parses arguments exactly as does the PUC-Rio interpreter.
* The official UPM repositories have moved to http://ulos.pickardayune.com.
* The `text` library's `wrap` function now word-wraps. It will also preserve the indentation of a line across wraps, such that manual pages now look significantly better.
* There are now manual pages for `tle`.
* `argutil` now has a `getopt` function, with the manual page updated accordingly.
* Fixed a small bug in `less` when jumping down a page.
* `less` now supports searching for a pattern within its buffer.
* Cynosure now (at least in theory) supports the Minitel networking stack.
* Fixed a bug in `cp` when copying a single file into a directory.
* There is now a `lshw` command. It doubles as a `components` implementation when given the `-o` or `--openos` options.
* `mount` now prints a more easily readable form of the output from `/sys/mounts` when invoked with no arguments.
* `passwd` has a new flag, `--clear-acls`, to clear all ACLs before processing `--enable` or `--disable`.
* Fixed a small bug with `df`.
* UWM now checks whether the GPU supports VRAM buffers before launching.
* Cynosure now caches `loadfile()` results for 60 seconds after the final time they are used, or until the system runs low on memory. This provides a moderate performance boost in the shell and other apps, while still allowing the system to run on 384KB of RAM.
* File reads now support pre-emption.
* The `sysfs`'s `filesystem` component handler now strips trailing newlines when setting filesystem labels.
* Cynosure's `checkArg` now supports being given a string as the first argument, and will show the function name in the error
* Fixed a few small bugs with `tle`.
ULOS 21.10:
* Release 21.10. Releases will now be roughly month-aligned.
* Fixed an issue with `edit` where the bottom bar would sometimes scroll up.
* UPM now uses semantic versions, and has been updated accordingly to version 2.0.0. **Upgrade to this release with `upm upgrade -f` or the upgrade will fail.**
* The `upm` package now contains a semantic versioning library, `semver`.
* `less`'s scrolling has been greatly optimized and is now much faster and smoother.
* Fixed a minor bug with the Cynosure TTY's `\27[S` function.
* Fixed pipes in `bsh` misbehaving when a process uses `os.execute`.
* There is now a `getty` package available, providing a service that automatically starts a login prompt on any TTY that does not already have a service assigned to it.
* There are now manual pagees documenting Cynosure's VT100 support, as well as a brief history of the ANSI specification.
* `bsh` now sets the process working directory to the user's home directory on login.
* Added `--help` and `--version` options to `bsh`.
* Fixed a bug with Cynosure's filesystem API.
* Added a `finish_after_arg` option to `argutil.getopt`.
* USysD's service management API now uses a request queue internally, so that services are always spawned from the `init` process.
* The `sudo` utility is now its own package, and requires the `sudo` service to be running in order to function. However, its policies are now different, and user credentials are "remembered" for 5 minutes after each `sudo` invocation.
* Switched `bsh` to use `argutil.getopt` over `argutil.parse`.
* The `sh` script now passes all arguments recieved to the shell it executes.
* Fixed the `minstall` installer not fully working when running from the same medium that is its target.
* Cynosure will now panic if `init`'s exit status is nonzero.
* Cynosure's `FILE*` implementation now returns itself from `:write()`. This was an oversight and has been fixed.
* There is now a `netutils` package available, containing a `wget` utility.
* The installer's online mode finally no longer clobbers `/init.lua` (by installing CLDR) except as the last step.
ULOS 22.2:
* Release 22.2.
* Fixed a bug with starting services in USysD.
* Added a new function, `message()`, to Cynosure's `process` API.
* Fixed an issue with Cynosure's pre-emption wrapper sometimes ignoring multiline strings.
* Cynosure now has configurable behavior for `computer.pullSignal` with a kernel argument.
* There is now a `sysfs` handler for the `eeprom` component.
* Replaced the preprocessor with a slightly improved version, making the kernel ~30KB smaller. It might now load on 192K of memory (though ULOS won't work).
* Completely rewrote Cynosure's code wrapper. It now behaves as expected when quote types are mixed.
* `os.execute` now behaves properly when `$PATH` is not set.