Here you can read past volumes of HelloGitHub Monthly by category. You are currently viewing the HelloGitHub C collection.
Retro PC Emulator.This is an open-source retro computer emulator that allows free combination and emulation of various classic hardware, such as Pentium and Celeron processors, sound cards, graphics cards, etc. It supports running early operating systems like DOS, Windows 98, Windows XP, and software from the same era.

Compact Windows Network Control Tool.This is a tool for managing and controlling Windows network activities. It is compact, ad-free, and completely free. It implements network filtering based on WFP, doesn't rely on the system's built-in firewall, and supports features like custom rules, IPv6, and block lists.

System-level Keyboard Remapping Tool for Linux.This is a system-level keyboard remapping daemon on Linux, implemented based on the kernel input layer (evdev/uinput). It doesn't rely on the desktop environment and configurations work on X11, Wayland, and TTY terminals. It supports setting different actions for press and long press, custom key combinations, and configuring key mapping rules for different keyboards individually.
Flexible and Easy-to-Use TLS Library.This project is an encryption library written in C language for implementing cryptographic primitives, X.509 certificate operations, and SSL/TLS and DTLS protocols. It is compact, easily portable, and provides a wealth of examples, making it suitable for devices with limited resources such as IoT and embedded systems.
The Inference Engine Dedicated to DeepSeek Developed by Redis Creator.This project is a lightweight local inference engine developed in C by the creator of Redis, specifically designed for the DeepSeek-V4-Flash model. It is not just a simple GGUF runner, but a fully functional independent inference engine that supports hardware acceleration with Metal and CUDA, 2-bit quantization, persistent disk KV cache, HTTP API services, and programming agents, etc.

A Teaching Operating System with Only 2000 Lines.This is a minimalist operating system implemented with only 2000 lines of code, containing 9 course experiments, aiming to enable every student to read and understand all the source code of the operating system. It is small in size, clear in structure, and can run on QEMU emulator and RISC-V development board, realizing core components such as memory management, process control, system calls, file system, network communication, and shell.

Install-Free Windows Monitoring Tool.This is an install-free open-source Windows system monitoring and debugging tool. It can real-time view process resource usage, network activities, disk read/write and other information. It supports locating processes occupying files, viewing kernel-level call stacks, and managing system services. Having trouble deleting a file? Find out which process is holding it in no time.

Tic-Tac-Toe in a Single printf Call.This is an open-source project showcasing C language black magic, which completes game logic operations, variable assignment, win/loss judgment, and interface rendering within a single printf call, and also supports number key moves, move detection, and board refresh functions.

Tiny Free Image Viewer Smaller Than Images.This is a lightweight Windows image viewer written in C language, allowing you to hardly feel any waiting. It is small in size, quick to launch, has extremely fast image loading and switching speeds, and supports mainstream image formats such as JPG, PNG, WEBP, BMP, GIF, ICO, TIF, etc.

Writing C Code Like a High-Level Language.This is a modern systems programming language that allows you to write code like a high-level language but run it like C. It compiles to GNU C/C11 code, is compatible with the C ABI (Application Binary Interface), supports seamless integration into existing C language ecosystems, and enhances the development experience while maintaining the execution efficiency of C.
import "std/net/tcp.zc" fn main() { "Echo Server listening on :8080"; let listener = TcpListener::bind("127.0.0.1", 8080).unwrap(); loop { // Accept new connections let stream = listener.accept().unwrap(); let buf: char[1024]; while true { let n = stream.read(&buf[0], 1024).unwrap(); if n == 0 { break; } stream.write(&buf[0], n); } } }
