Collection of cross-platform single-header C libraries for doing a lot of stuff! (Still WIP)

ice_libs

Collection of cross-platform single-header C libraries for doing a lot of stuff! (Still WIP)

Brief

ice_libs is collection of Single-Header C libraries, Designed to introduce stuff that sokol and some single-header libs didn't offered, In addition to more stuff offered by these libs.

Goals

  1. Portability: Supports ANSI C and onwards!
  2. Cross-Platform: Runs on a lot of platform, Including Game Consoles.
  3. Customizable: You can build shared libs of any ice library by the way you want.
  4. Platform-Detectable: ice libraries can detect platform that program runs on, So you are not forced to define implementation platform and backend used.
  5. Controllable: Offers custom memory allocators, Custom calling conventions, And more...
  6. Bindings-Friendly: Designed to make bindings much easier!
  7. Easy to code.
  8. Optimizable.
  9. Easy to license: ice libraries allows you to choose between 2 licenses: Public Domain and MIT!

Libraries

library library description platforms supported languages lines of code
ice_ffi.h Cross-Platform Single-Header library to work with shared libs Microsoft platforms, Unix-based platforms C 299
ice_fs.h Cross-Platform Single-Header library for filesystem functions Anywhere C 1888
ice_clipboard.h Cross-Platform Single-Header Clipboard library Anywhere C, C++, Obj-C 706
ice_ram.h Cross-Platform Single-Header library to get RAM info Microsoft platforms, Unix-based platforms, Web (Emscripten), Sony PlayStation Portable C 384
ice_time.h Cross-Platform Single-Header Time library Anywhere C 917
ice_easings.h Cross-Platform Single-Header Easings library Anywhere C 447
ice_math.h Cross-Platform Single-Header Math library Anywhere C 3609
ice_al.h Cross-Platform Single-Header OpenAL API loader OpenAL API supported platforms C 656
ice_steam.h Cross-Platform Single-Header Steamworks API loader Steamworks API supported platforms C 4754
ice_test.h Cross-Platform Single-Header Tiny unit testing lib Anywhere C 165
ice_str.h Cross-Platform Single-Header for working with strings Anywhere C 614
ice_arr.h Cross-Platform Single-Header for working with numeric arrays Anywhere C 773
ice_battery.h Cross-Platform Single-Header for getting battery info Microsoft platforms, Unix-based platforms, Web (Emscripten), Nintendo Switch, Sony PlayStation Portable, Sony PlayStation Vita C 996

NOTE: Unix-based platforms means Linux, iOS, OSX, Haiku, BeOS, and Android.

For docs of ice_libs see here!

Special Thanks

  1. Eduardo Bart, André L. Alvares, and Nicolas Sauzede for encouraging me to work on this!
  2. Together C and C++ Discord Server community, They are very amazing and helped me when got stuck.
  3. Sean Barrett, Andre Weissflog, and Micha Mettke as i got inspiration from their libs to work on my own!
  4. Everyone including you!
Owner
Rabia Alhaffar
Syrian game programmer at age of 16, Hobbyist indie game developer and often do web/software stuff!
Rabia Alhaffar
Comments
  • Add A Simple ice.h Header

    Add A Simple ice.h Header

    adding this header will let the user use all Icelib headers using one header, not two, a single help but im working on ice_gpu.h and in near future im gonna pull resquet it too :--), Thanks For Ur Good Libary

  • Allow overriding/specifying custom allocator/deallocator pair

    Allow overriding/specifying custom allocator/deallocator pair

    Memory allocations directly use malloc and free. Having a couple of macros like ALLOC_FUNC and DEALLOC_FUNC and using them everywhere would be better. malloc and free can be defaults when these macros are undefined. This would be beneficial for using these headers in projects that have tight memory constraints and do manual memory management. Example: stb.

  • General Improvements!

    General Improvements!

    1. Rewrote ice_ease.h for best performance (Faster than old ice_ease.h by over 20% when using -Ofast flag )
    2. Added ICE_EASE_TAU and ICE_EASE_HALF_PI for ice_ease.h
    3. Updated samples to discard return type when calling printf function.
    4. Added tree.c in samples folder which is program that implements tree command!
    5. Updated workflow to be more explained...
  • General improvements for ice_ffi.h and ice_fs.h and ice_cpu.h

    General improvements for ice_ffi.h and ice_fs.h and ice_cpu.h

    1. Security improvements have been done for ice_al.h and ice_ffi.h
    2. Extended string length for ice_cpu_brand (CPU Name) in ice_cpu.h on Microsoft Platforms
    3. Fixed ice_fs_type function in ice_fs.h to be compatible with MSVC!
    4. Improved some samples...
  • 1st anniversary update!

    1st anniversary update!

    1. ice_libs have passed 1 year on GitHub! (Happy Anniversary!)
    2. ice_fs.h released, Which is a Single-Header Cross-Platform C library to work with files and directories and paths!
    3. Done some patches to prevent crashes in some libraries!
    4. Added sample for ice_fs.h along with bindings for DragonRuby, LuaJIT, and Nelua!
    5. Added build scripts based on the same ones used in GitHub Actions, So you can build locally on your device.
    6. Build flags for the workflow are now more strict, Which allowed to fix a lot of problems...
    7. Renamed ice_str_arr_free to ice_str_free_arr in ice_str.h
    8. Fixed ice_cpu.h on BSDs!
    9. Updated TODO for next goals!
    10. Simplified the GitHub Actions workflow build script...
    11. Splitted DragonRuby/MRuby bindings into cexts folder and added Ruby files that loads the compiled shared library of the bindings along with Ruby definitions for each library!
    12. Added invalid pointer error codes to the libraries that uses error enumerations (Like ice_batt.h and ice_time.h)
    13. Fixed reverse of string mechanism for ice_str_rev in ice_str.h
Several single-file, cross-platform, public domain libraries for C/C++ that I use for learning / testing

HTC Several single-file, cross-platform, public domain libraries for C/C++ that I use for learning / testing (Not meant for production code). This is

Nov 5, 2022
An experiment of running a lot of wasm apps on esp32 M5 atom matrix board

Wasms This is a POC project to run many wasm apps on a single esp32 board (in my case, M5 Atom Matrix, with a nice neopixel 5x5 display matrix). All I

Sep 21, 2022
CAN bus extruder, more resistant to noise,reduce a lot of wires for your 3D printer
CAN bus extruder, more resistant to noise,reduce a lot of wires for your 3D printer

PandaCAN is an extruder control board that connect to main board with CAN interface, more resistant to signal noise,reduce a lot of wires for your 3D printer.

Nov 11, 2022
By putting in a lot of speed, the speed sequence is sorted and divided, three types of speed interval distribution maps are generated.(including broken line graph,histogram and curve graph)

Auto-drawing-speed-range-map By putting in a lot of speed, the speed sequence is sorted and divided, three types of speed interval distribution maps a

May 14, 2022
WIP Plan 9 port of Simon Tatham's Portable Puzzle Collection

This is the README accompanying the source code to Simon Tatham's puzzle collection. The collection's web site is at <https://www.chiark.greenend.org.

Sep 16, 2021
CVE-2021-24084 Windows Local Privilege Escalation Left officially unpatched since 2020. Hence, its still a zero day

WindowsMDM-LPE-0Day Works best on Windows 11 CVE-2021-24084 Windows Local Privilege Escalation Left officially unpatched since 2020. Hence, its still

Nov 9, 2022
Orca - Advanced Malware with multifeatures written in ASM/C/C++ , work on all windows versions ! (some features still under developing and not stable)
Orca - Advanced Malware with multifeatures written in ASM/C/C++ , work on all windows versions  !  (some features still under developing and not stable)

About Orca Orca is an Advanced Malware with multifeatures written in ASM/C/C++ features Run in Background (Hidden Mode) Records keystrokes and saves t

Nov 17, 2022
Program that allows you to get the source code of a website's home page without doing it manually. Use it at your own risk.

Website-Homepage-Grabber Install one of the folders x64 or x32 if the program doesn't work(probably because you don't have visual studio installed) If

Feb 19, 2022
A Modern C11 compiler (STILL EARLY)
A Modern C11 compiler (STILL EARLY)

Cuik (pronounced 'Quick') warning: unfinished The plan is a modern C11 compiler which can mostly work with Clang, GCC, and MSVC while also introducing

Nov 23, 2022
Faster neofetch alternative, written in C. Still improving :)
Faster neofetch alternative, written in C. Still improving :)

albafetch ~by alba4k albafetch is a simple, fast system fetching program. It prints many info about the system in way less than a second. I decided to

Aug 25, 2022
A single file, single function, header to make notifications on the PS4 easier

Notifi Synopsis Adds a single function notifi(). It functions like printf however the first arg is the image to use (NULL and any invalid input should

Oct 4, 2022
A collection of tools, libraries, and tests for Vulkan shader compilation.

Shaderc A collection of tools, libraries and tests for shader compilation. At the moment it includes: glslc, a command line compiler for GLSL/HLSL to

Nov 27, 2022
Cloud Native Data Plane (CNDP) is a collection of user space libraries to accelerate packet processing for cloud applications.

CNDP - Cloud Native Data Plane Overview Cloud Native Data Plane (CNDP) is a collection of userspace libraries for accelerating packet processing for c

Nov 24, 2022
A high performance, shared memory, lock free, cross platform, single file, no dependencies, C++11 key-value store
A high performance, shared memory, lock free, cross platform, single file, no dependencies, C++11 key-value store

SimDB A high performance, shared memory, lock free, cross platform, single file, no dependencies, C++11 key-value store. SimDB is part of LAVA (Live A

Nov 30, 2022
I add my Pi Pico (RP2040) stuff here.

Pico Stuff I add my Pi Pico (RP2040) stuff here. There are complete apps and libraries for sensors or complicated tasks. Libraries BMP180: Header-only

Nov 18, 2022
Stuff I've made/found for reversing/modding/extracting NieR:Replicant v1.224...

NieR:Replicant ver.1.22474487139 Tools Archive (.arc) Files Hex Signature: 28 B5 2F FD Can contain one or multiple compressed files. Files are compres

Jul 30, 2022
Violent Fungus is a command and control (C2) software suite, providing red teams post-exploitation persistence and other juicy stuff.

Violent Fungus is a command and control (C2) software suite, providing red teams post-exploitation persistence and other juicy stuff.

Sep 7, 2022
A DLL that fixes some stuff on Fortnite OT 6.5. Originally based on Alphaium by Cyuubi
A DLL that fixes some stuff on Fortnite OT 6.5. Originally based on Alphaium by Cyuubi

How to use Compile as x86 because alpha is 32 bit Setup the responses Inject while in the login screen Wait for the console to tell you to login Respo

Jul 23, 2022
a simple project made with a esp32 and some other stuff
a simple project made with a esp32 and some other stuff

pumkin candy dispenser its a really simple candy dispenser that it works with a esp32 ai thinker. I made it for a school project and idk it looks cool

Jul 15, 2022