GRU Devlog 23 - more olibc and start of occ (and more projects ideas!)

January 02, 2022 — G1n

I think this week was productive. I have done a lot of things to olibc. First I finally implemented working FILE struct. That required to implement malloc and free, so we also have it now! Then stdio.h was implemented. Still need to make a lot of functions, but we already have most useful ones (for examples every C11 printf functions implemented and fully working). Also finally stdin/stdout/stderr file descriptors working properly.

We have full implemented <ctype.h> header now! It wasn’t really hard.

This year I started from tryes to make occ - GRU C compiler (maybe it will be GRU Compiler Collection in future). A lot of things will need to be implemented and a lot of new to know! I hope it will be fun :)

Happy New 2022 Year! I hope we will make a lot of new tools this year. And more people will join us :)

Hope you liked this post! If you would like to help us, contact me via email, xmpp or irc :)

tags: gru, olibc, occ

GRU Devlog 22 - olibc, liblinux, mailing list

December 26, 2021 — G1n

Happy Chirstmas! Next GRU Devlog will be next year so Happy New Year! I hope GRU will grow and grow next year :D

On last Sunday we have created mailing list after devlog. Currently it is not active, but but you can message us there - gru@lists.tildeverse.org. Then I tryed to make FILE struct for liblinux, but it wasn’t working so it needed to be reimplemented.

Then youngchief submitted some changes to our webpage. Also robyndrake contributed some fixes to coreutils.

Also I had implemented printf and vprintf! It currently have %c, %d, %s so it will be useful for debugging. I have tryed to implement snprintf, but i had several problems with it so it is not done yet.

Then chunk contributed logo for us! I think it looks nice!

Last useful thing that I have done this week is very minimal FILE, it currently just has fd and nothing else.

I hope we will make more cool things and finish current projects next year!

Hope you liked this post! I wish everyone cool New Year! If you would like to help us, contact me via email, xmpp or irc :)

tags: gru, olibc, liblinux, mailing-list

GRU Devlog 21 - olibc

December 19, 2021 — G1n

This week I also was making olibc. Now it is published! I have mostly implemented <string.h>, but there still some funcs that require <locale.h>, so they are not implemented yet.

I found out why olibc wasn’t giving correct return value after program is executed. It was because liblinux wasn’t exiting correctly, so it received some random return values from stack.

Also a lot of testing were done. I have found out that several functions wasn’t working correctly and fixed it. We have shell script for testing that compares results from our libc and libc that installed on user’s machine. It prints a diff output if test was failed. It also have other features, if you want you can check it by running test.sh --help by yourself.

Because of it I have found that several functions were wrong implemented. But now finally everything is working and strtok is correctly implemented!

Also this blog finally moved totally from my webpage, so we can move this site on different server just by cloning it from codeberg or tildegit

Hope you liked this post! If you would like to help us, contact me via email, xmpp or irc :)

tags: gru, olibc, liblinux

GRU Devlog 20 - olibc

December 12, 2021 — G1n

This week I was making olibc. I was implementing <string.h>. Also I was fixing liblinux to be able to include it without need to use full path in #include. I had several other issues with it and also fixed them.

My current goal is to implement <string.h> and after that I am planning to publish it. Currently most of funcs are implemented. Making strtok now but all other functions need locale.h and I don’t know yet how it will be implemented. But it is already cool that we have most of functions that should be in <string.h>!

Also we now have gru webpage on codeberg! Maybe next week I will move all devlogs to gru webpage so it will be easier to move.

Hope you liked this post! If you would like to help us, contact me via email, xmpp or irc :)

tags: gru, olibc, liblinux

GRU Devlog 19 - gic and several libs

December 05, 2021 — G1n

This week started with making gic (maybe name will be change). As I have written before it is going to be suckless ii clone. Also I started making girclib - simple C library for irc protocol. I think it will be published as separate project, because I would like to make it for both: client and server. I don’t yet how it will be done but we will see…

Then I thought that would be cool to have own libc, but have no knowledge how it speaks with OS. Then I understood that on linux it is working via syscalls. So started making liblinux - C library for linux syscalls. Using it we won’t need to use assembly a lot in our libc. Currently write and read syscalls are done and programmer can use it if passed -I, -L and -l flags to compiler. And it is already published! (check codeberg or tildegit)

After understanding how to create proper makefile with liblinux, I started making olibc. Currently it has very tiny number of features. But string.h is mostly done! I don’t know when I will fill that it will be ready enough to be published, but hope to have useful functions and test suit there till that time.

When olibc will be done enough I am going to start making C compiler (already have some code, but it is old and I not understand how it works, so need to be rewritten). Also I hope that we will have enough toolchain (or I will have enough knowledge to implement things that are not done faster) for our own Linux or BSD distribution. But that will be in future…

Hope you liked this post! If you would like to help us, contact me via email, xmpp or irc :)

tags: gru, gic, girclib, liblinux, olibc, libs

GRU Devlog 17-18 - coreutils, EGG and ideas

November 28, 2021 — G1n

Last week I didn’t make devlog because was busy and haven’t done anything useful except mkdir for coreutils.

This week I started from try to make something in framebuffer but currently nothing, because I can’t even understand why my code can’t see size of my display. I think E will require making something like Elib for easier communicating with E (but it will be in very far future…)

Then I made echo and very simple ls for coreutils. I am going to add more flags to ls next week. This week I also have made simple irc bot in python, so I will try to make simple clone of suckless ii on C (i think name gic is now really good so if you have ideas please suggest them to me). Currently I don’t reallly understand how to work with sockets but I will try to do something.

Hope you liked this post! If you would like to help us, contact me via email, xmpp or irc :)

tags: gru, coreutils, egg

GRU Devlog 16 - ormp and EGG

November 14, 2021 — G1n

This week i was working on one more new project - ormp. It will be terminal multiplexor. Currently i am doing it in ncurses. For current time it is not working - can just handle input but not display it.

Also i have an idea for new projects - EGG (Extended/Exciting GRU GUI). I am planning some proj in this category - eggwm, eggterm, eggmenu and E. E would be a new display server. We will need to have it for Orion in future. Currently i am planning to do it or on fbdev or on DRM/KMS.

Also now yemu can be compiled with different compilers, -pedantic flag was added to makefile and all errors fixed.

And now our channels are bridged via matterbridge: irc on ~chat, irc on libera and xmpp muc.

Hope you liked this post! If you would like to help us, contact me via email, xmpp or irc :)

tags: gru, ormp, egg, yemu, xmpp, irc

GRU Devlog 15 - ocpu, yemu and licenses

November 07, 2021 — G1n

This week wasn’t very productive. I was working on one of my personal projects.

I have added ADD for registers, INC, DEC and NOP instructions.

Also codeberg informed me that yemu has to have license, and I fast added MIT license to all our projects.

Hope you liked this post! If you would like to help me, contact me via email, xmpp or irc :)

tags: gru, ocpu, yemu, license

GRU Devlog 14 - ocpu and yemu

October 31, 2021 — G1n

This week I was working on ocpu emulator. So using it we can know if specifications can be implemented. It helps me adding some description to it.

First I made yemu a bit modular, so you need to add several lines to main file and then building your emulator based on template (that should be placed in docs one day). Now if someone would like to add some architecture to our emulator they won’t need to rewrite it from scratch.

I also added –system flag to yemu so architecture can be choosen more user-friendly way.

Currently in ocpu emulator only mov and add instructions are implemented. We also added some description to commands in specifications, so it is easier to understand what it should do

Hope you liked this post! If you would like to help me, contact me via email, xmpp or irc :)

tags: gru, yemu, ocpu

GRU Devlog 13 - ocpu thoughts and some elecronics

October 24, 2021 — G1n

This week was very busy week at school and I had no time for programming.

But in the start of week I was thinking about making ocpu specs more Turing-complete. I still think it is not done but maybe it will in some time (and of course more description required).

But I had time to buy some transistors and other electronics. Currently I am trying to make half-adder.

I have created tiny log page - lolcpu. I am going to post there some of my electronic ideas, circuits and progress in doing some electronic things.

Hope you liked this post! If you would like to help me, contact me via email, xmpp or irc :)

tags: gru, lolcpu, ocpu, transistors, electonics