The return of the project

Hey guys, I’m come back!

As you can see the site is heavily changed, and many stuffs (like the logo) are not the same. This is why the project wasn’t stopped, at contrary, from the last post I really re-implemented all the system from the kernel to the applications (the kernel is still under heavy development, many new libraries were written and a lot of new ideas are into the pot), but the new sources are hosted on a private git server. As soon as possible they will become available on GitHub as master branch, stay tuned.

Any novelties?

Hi Guys, as I writed some days ago on my Telegram channel I’m rewriting the kernel to solve many architectural issues, expecially on the memory manager.

The new kernel will be called Envolve (something like Evangelion Evolution) and will be x86/x86-64, hybrid (modular micro kernel), more Unix-like and written with C++14. I’m taking examples from Linux, SeaOS, EscapeOS, ToaruOS and others similar projects,…we’ll see what will come out of it.

Envolve will replace EvangelionNG, the current kernel, that is based on the Ghost Kernel.

POSIX framework update

Updated the POSIX framework on the MeetiX’s libc. Now the system supports the most common pthread functions wrapped over the native API to create and manage the threads.

Available and working functions:

int pthread_attr_init(pthread_attr_t *attr);
 

int pthread_set_detachstate(pthread_attr_t *attr, 
                            int detachstate);

int pthread_attr_destroy(pthread_attr_t *attr)

int pthread_create(pthread_t *thread, 
                   const pthread_attr_t *attr, 
                   void *(*start_routine)(void*), void *arg);

int pthread_join(pthread_t *thread, 
                 void **retval);

pthread_t *pthread_self(void);

int pthread_kill(pthread_t *thread, 
                 int sig);

void pthread_exit(void *value);

Updated the stress command, implemented the test code for native threads and POSIX threads.

EvangelionNG update

Yeaaaah, finally I have the pleasure to announce that the kernel is able to deallocate from the memory the death threads and processes, removing and freeing all the acquired resources. Today i have the opportunity to make a kernel version jump from the fossilized 2.1.0.s to 2.3.0.i.

I implemented a new simple as stupid command to test the new kernel update. The command is called: stress and at the moment only the –heap option is implemented.

I cleared the documentation, i will rewrite it.

MeetiX OS 0.7.1

Hi guys, I finally finished the heavy work that was planned to do before start with the development of the stuffs listed into the last post. I revisited and commented most of the kernel and libraries code. So:

  • Rewrited all the commands and added a new one:  ntf: to send a notification to the desktop and show a graphics popup on the screen, like the UItweak.
  • Removed the EvaQuery interface, in favor of separate calls:
     uint32_t GetThreadCount();
    
     uint32_t GetThreadCountT(ThreadType type);
    
     uint32_t GetThreadTids(Tid *buffer, uint32_t length);
    
     uint32_t GetThreadTidsT(Tid *buffer, uint32_t length, ThreadType type);
    
     uint8_t GetThreadDescriptor(Tid id, ThreadDescriptor *descriptor);
    
     uint32_t GetProcessCount();
    
     uint32_t GetProcessPids(Pid *buffer, uint32_t length);
    
     uint8_t GetProcessDescriptor(Pid id, ProcessDescriptor *descriptor);
    
     uint32_t GetPciDeviceCount();
    
     uint8_t GetPciDevice(uint32_t position, PciDeviceHeader *header);
  • Now the window server is considered a server, so it has been moved to /sys/eva/server and its dependency files (backgrounds, cursors, etc …) have been moved to /cfg/gui/.
  • Added getopt to the C library
  • Added IPCstream to the utils library
  • Removed the FileKernelLog interface
  • Lot of other minor things, check the diffs on GitHub

I know there are lot of new bugs that are caused by the window server (I don’t waste any more time because i still rewriting a new one) and by the ramdisk driver which cause memory corruptions (in next versions his use will be reduced in favor of the ISO9660 fs). For this update I decided to avoid to post a new iso, too much unstable.

Next development goals

I finally got rid of a very heavy personal commitment, now I will intensify the development of MeetiX OS, which has long been inexorably stopped.

I intend to slowly apply these new updates to the system:

Kernel:

  • Prioritized task schedulation.
  • CPU usage and frequency calculation.
  • Processes deallocation.
  • Shutdown & reboot.
  • Multi-User support.

Driver:

  • WeNET: Window Environment Network, a new GUI compositor server.
  • EnvFS: to manage environment variables on multiuser.
  • ProcFS: like in *NIX systems.
  • Read ATAPI: to read on physical drives.
  • Iso9660: to read from real CD.
  • VirtualBox guest addictions.
  • Sound and Intel AC97.
  • Dynamic Linking support.

Libraries:

  • Application: standardized and singletone class to create GUI application.
  • LibDriver: interface library to create and communicate with drivers.
  • LibC: time and getopt implementation.
  • IPC_Stream: class for high-level IPC.

User space:

  • Multi-Session support: multiple indipendent user session (no multi desktop).
  • Interpreter for the MX++ scripting language (integrated into the MESH shell).
  • MX-Term: the new terminal interface of MeetiX.
  • Remove CandyShell and CandyTerminal.
  • MESH as the default system shell.
  • JavaScript applications.
  • GUI TaskManager.
  • Tetris game.
  • Pong game.

Development pack:

  • GCC and Binutils update to, at least, version 6.3, preferred version 7.x
  • Use Scons or Make to build sources, no more bash.
  • Documentation.