# BeeOS Change Log

All notable changes to this project will be documented in this file.
This project adheres to "Semantic Versioning" (http://semver.org)

################################################################################

[ Version 0.2.0 - 2018-04-06 ]

Features

- VFS mount syscall implementation
- VFS trafersing is now performed via (cached) dentries.
- DEVFS implementation
- Pseudo random number generator device driver

Improvements

- General code cleanup as the result of coding standards analysis
	- MISRA C 2012
	- MISRA C 2004
	- SEI CERT C
  Full report publication: https://datawok.net/articles/2018/beeos_static
  The analysis produced a lot of code refactory. Only mahor changes are
  listed here.
- Better context switch code using the stack.
- Dead code removal

Bugfix

- TTY driver fix in the get current process group controlling terminal
- Set kernel process0 task parent of itself
- VFS iget/iput fix

################################################################################

[ Version 0.1.1 - 2018-01-23 ]

Features

- VFS: devfs, allow to open initrd from user space
- mknod syscall
- gethostname library function (reads from "/etc/hostname")
- First sys_mount implementation. Not exposed to the userspace yet.

Improvements

- Infamous 'dev_io' function has been removed.
- Drivers calls directly reads and writes, eventually passing the dev_t value.

Bugfix

- Critical fix in the sys_execve. Init process was started with a null
  'environ' causing issues in case it decides to use getenv/setenv/putenv calls.

User

- Better shell that prints user and host using environment variables
- 'env' program to display the environment variables.
- 'init' creates devices in 'dev' filesystem mounted in '/dev' directory using
  the mknod syscall: zero,tty1,tty2,tty3,tty4,initrd.

################################################################################

[ Version 0.1.0 - 2018-01-12 ]

Features

- Multi-tty terminal (Alt-Fn to switch).
- Screen timed refresh and only on dirty backbuffers.

Bugfix

- Remove task from conditional variables wait queue before send signals.
- Wake up readers (writers) waiting on a pipe without writers (readers) to
  avoid starvation.


################################################################################

[ Version 0.0.2 - 2018-01-05 ]

Features

- Independent kernel stacks virtual addresses
- Better getcwd syscall
- tcgetpgrp and tcsetpgrp syscalls
- getpgid and setpgid syscalls
- CTRL-C to send SIGINT to foreground process group
- Process vertical (parent/child) and horizontal (sibling) relationships
- Eclipse IDE projects

User

- Ignore SIGINT in the shell prompt

Fix

- Swapper task switch only if not alredy running

################################################################################

[ Version 0.0.1 - 2017-09-14 ]

First (and last?) almost stable release.

Features

- Multitasking
- Syscalls
- Virtual Memory
- Virtual File System (ext2 and custom initrd)
- SLAB  memory allocator
- Buddy memory allocator
- Timer queues
- Signals
- Pipes
- System V messages
- Spinlocks
- Wait queues
- TTY
- Ramdisk
- Keyboard
