commit 7735011928f3a5d1bb4cfe03f23e4f27f3a188e4 Author: Abdulmujeeb Raji Date: Tue Jan 14 21:34:35 2025 +0000 look what im planning diff --git a/LICENSE.md b/LICENSE.md new file mode 100644 index 0000000..a6239f7 --- /dev/null +++ b/LICENSE.md @@ -0,0 +1,27 @@ +Copyright 2025 Abdulmujeeb Raji + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + +1. Redistributions of source code must retain the above copyright notice, this +list of conditions and the following disclaimer. + +2. Redistributions in binary form must reproduce the above copyright notice, +this list of conditions and the following disclaimer in the documentation +and/or other materials provided with the distribution. + +3. Neither the name of the copyright holder nor the names of its contributors +may be used to endorse or promote products derived from this software without +specific prior written permission. + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS “AS IS” AND +ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE +FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL +DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR +SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER +CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, +OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE +OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + diff --git a/README.md b/README.md new file mode 100644 index 0000000..8e00085 --- /dev/null +++ b/README.md @@ -0,0 +1,60 @@ +# Bravely Arranged Standard Library +`bastd` is my own custom standard library for C, made to aid in the development +of games, 3D software, 2D development tools and more. + +It strays heavily from what is supported in the +[lackluster](https://nullprogram.com/blog/2023/02/11/) C standard library and +aims to be a sufficient and even superior replacement. + +`bastd`'s design goals include: +- Simplifying the build system +- Providing a full framework for Graphical and Console Applications +- Giving clear errors and debugging tools to the Programmer +- Making C a more "tolerable" language + +`bastd`'s features include: +- [ ] No header files. They cause more harm than good in my opinion, and I prefer a +single translation unit in my builds. You just include `bastd.c` at the top of +your main C file and you start writing code. +- [ ] Memory Allocators. The premier one is the +[Arena Allocator](https://www.rfleury.com/p/untangling-lifetimes-the-arena-allocator), +which acts as our generic allocator in place of `malloc`, providing a unfirom +interface that simplifies memory management and groups allocations together +into clearly defined lifetimes +- [ ] A Length-Based String Type + String Builder. This replaces whatever the hell +`string.h` was meant to be, by introducing a length to strings, which allows +for simple slicing of the string and modification. +- [ ] Generic data-structures. The premier one is the +[Dynamic Array](https://dylanfalconer.com/articles/dynamic-arrays-in-c), which +brings the power of C++'s `std::vector` to C +- [ ] A simple I/O system that supports both standard input/output and file +input/output. It's built on a basic buffer type that you can flush to output +data. +- [ ] A logging system built ontop of this I/O system. You can either log out to +a file or to stdout. +- [ ] A simple GUI initialization system that gets you an Direct3D 11 or OpenGL +window with immediate-mode input. +- [ ] A basic 2D renderer built ontop of this graphics initializater, that can +draw shapes and textures to the screen. The shaders used can be customized for +added effect. It features a simple camera system to seperate which parts of +the screen use which shaders and viewports. +- [ ] An audio library. Windows implementation uses WASAPI, Linux uses ALSA. + +--- +- [x] implemented +- [ ] planned +--- + +The only currently supported platform is Windows, though once the APIs are +finished, a Linux and FreeBSD port are planned. + +## Why C? +Cuz I like C. It's the closest "high-level" language to assembly, so I have +maximum control. It is *really simple*, which in some ways is to its detriment. +Almost all OS libraries, Graphics libraries, Audio libraries, etc. are written +in C. + +C is great. Don't let anyone tell you it's not. + +## LICENSE +`bastd` is licensed under the 3-clause BSD license. See [LICENSE.md](LICENSE.md). \ No newline at end of file