Releases: ryuukumar/cos
Release list
COS 0.08
COS 0.08
DISCLAIMER: COS is not Windows or Linux or what-have-it, I cannot vouch for its stability! Though I make my best effort to ensure it works as expected, running this on your potato may end up cooking it! Please don't run this on any even remotely important hardware. VMs are okay :)
What's Changed
- New memory management: bitmap physical allocator, dynamic VMM, internal liballoc
- Userspace: process management, ELF loading, execve, waitpid, brk, getpid, signals, syscalls via
syscallinstruction (with support for INT 0x80) - Filesystem: initramfs, CPIO, RAMFS with writes, VFS syscalls, newlib support
- Devices: PIC, TTY, keyboard, ACPI parsing (early)
- Kernel utilities: hashmap, deque, VLA, thread‑safe charqueue, extended string/ctype
- Shell: cosh shell, console revamp, ioctl(TIOCGWINSZ)
- Misc: C23, #pragma once refactor, SSE, GPLv2 licensing
PRs merged
- Port liballoc for malloc and free by @ryuukumar in #1
- Enforce basic formatting across codebase by @ryuukumar in #2
- Support for PIC by @ryuukumar in #3
- Enforce column limit of 100 by @ryuukumar in #4
- Add vaddr_t and get_vaddr_t_from_ptr by @ryuukumar in #5
- Migrate to bitmap-based physical memory management by @ryuukumar in #6
- Implement a dynamic virtual memory manager by @ryuukumar in #7
- Reorganise file structure of repo by @ryuukumar in #8
- INT 0x80, GPF and some user mode prerequisites by @ryuukumar in #9
- Add and inject initramfs and a sample hello world program by @ryuukumar in #10
- Parse CPIO archive by @ryuukumar in #11
- Cleanup by @ryuukumar in #13
- Set up process management by @ryuukumar in #14
- Syscalls open, close, read, peek + expose mkdir, create by @ryuukumar in #15
- Set up loading of elf files by @ryuukumar in #12
- Make syscalls registerable by @ryuukumar in #16
- Add write operations in ramfs and stdio by @ryuukumar in #17
- Decouple cpio extraction from ramfs setup by @ryuukumar in #18
- Add sys_exit, sys_getpid and sys_brk by @ryuukumar in #19
- Switch to using C23 for the kernel and 'hello' user program by @ryuukumar in #20
- Organise stdlib functions into a kclib directory by @ryuukumar in #21
- Improve the kernel printf and sibling functions by @ryuukumar in #22
- Add ctype.h implementation by @ryuukumar in #24
- Revamp string.h and implement more string utils by @ryuukumar in #25
- Use string.h functions where applicable + some cleanup by @ryuukumar in #26
- (fix) Do not deallocate memory of a process by @ryuukumar in #27
- (fix) Patch scheduler bug occuring when there was a single process by @ryuukumar in #28
- Add some multithreading utils by @ryuukumar in #29
- Add a thread-safe charqueue by @ryuukumar in #30
- Initialise character device tty1 and use system open calls by @ryuukumar in #32
- Set up software context switching by @ryuukumar in #33
- Fix breaking build due to incomplete rename by @ryuukumar in #36
- Improvements to build system by @ryuukumar in #37
- Parse some ACPI structures by @ryuukumar in #35
- Switch to pragma once for all header files by @ryuukumar in #39
- Add support for reading keyboard by @ryuukumar in #31
- Add newlib support by @ryuukumar in #42
- Initialise SSE by @ryuukumar in #43
- Add pishell submodule by @ryuukumar in #40
- Standardise initramfs sysroot by @ryuukumar in #44
- Reorganise memory and vfs code by @ryuukumar in #45
- Fix bug where VMM was not initialised by @ryuukumar in #47
- Make limine a submodule by @ryuukumar in #46
- Implement execve syscall by @ryuukumar in #48
- Optimise deallocation + bunch of fixes + remove pishell by @ryuukumar in #49
- Add a simple hashmap32 by @ryuukumar in #50
- Add some vfs syscalls by @ryuukumar in #51
- Add variable length array as util by @ryuukumar in #53
- Add waitpid syscall by @ryuukumar in #52
- Adapt kernel internal errors to fit the expected libc error numbers by @ryuukumar in #55
- Add a mini shell by @ryuukumar in #54
- Replace \b -> DEL and ignore tabs in kb input to tty by @ryuukumar in #56
- Add deque implementation in utils by @ryuukumar in #58
- Revamp console by @ryuukumar in #57
- Route TIOCGWINSZ via ioctl and change how ls renders by @ryuukumar in #59
- Implement signals for processes and handle them in cosh by @ryuukumar in #60
- Reduce dependency on dynamic memory alloc in printf functions by @ryuukumar in #62
- Implement and respect flags in VMM by @ryuukumar in #61
- Support 'syscall' instruction and syscalls with 0-6 arguments by @ryuukumar in #63
- License COS under GPLv2 by @ryuukumar in #64
Full Changelog: https://github.com/ryuukumar/cos/commits/v0.08
License
This release is licensed under the GNU General Public License v2.0 - see the LICENSE file for details.
This release includes submodules newlib-cygwin and limine. These may be licensed under separate terms; see their license disclosures in directory contents.
COS 0.07
COS 0.07
Originally written in 2022.
COS is a hobby OS development project which I sporadically work on to further my programming skills in C and C++ and my understanding of computer systems. I intend to stick to these two languages for the whole project.
Documentation is sparse, but you can use doxygen to build it from the in-code comments.
DISCLAIMER: COS is not Windows or Linux or what-have-it, I cannot vouch for its stability! Though I make my best effort to ensure it works as expected, running this on your potato may end up cooking it! Please don't run this on any even remotely important hardware. VMs are okay :)
Capabilities
- It boots up on most modern-day 64-bit systems (x86_64 architecture only)
- It can print stuff on your screen
Setup and Usage
Refer to the README.md for a guide on setup.
License
This release is licensed under the GNU General Public License v2.0 - see the LICENSE file for details.
Full Changelog: https://github.com/ryuukumar/cos/commits/v0.07