(Omniverse Physics)
Author of "Sane C++ Libraries"
https://github.com/Pagghiu/SaneCppLibraries
Videos: https://youtube.com/@Pagghiu
Site: https://pagghiu.github.io
Opinions are my own.
✅ Further reduction of internal dependencies
✅ Bring Your Own Containers example (InteropSTL)
✅ New bootstrap for SC::Tools written in C++
✅ Increased test coverage
✅ Improved CI
✅ Fixes
github.com/Pagghiu/Sane...
#cpp #cplusplus
✅ Further reduction of internal dependencies
✅ Bring Your Own Containers example (InteropSTL)
✅ New bootstrap for SC::Tools written in C++
✅ Increased test coverage
✅ Improved CI
✅ Fixes
github.com/Pagghiu/Sane...
#cpp #cplusplus
✅Get rid of many inter-library dependencies
✅Stop accidental dependencies additions in CI
✅Free most libraries from dynamic allocation
✅Transform Build from lib to app
✅Add GDB Pretty Printer
✅Many smaller fixes
github.com/Pagghiu/Sane...
#cpp #cplusplus
✅Get rid of many inter-library dependencies
✅Stop accidental dependencies additions in CI
✅Free most libraries from dynamic allocation
✅Transform Build from lib to app
✅Add GDB Pretty Printer
✅Many smaller fixes
github.com/Pagghiu/Sane...
#cpp #cplusplus
In addition to the already existing ones for LLDB and MSVC Debugger (.natvis) I think we should be good now!
#cpp #cplusplus
In addition to the already existing ones for LLDB and MSVC Debugger (.natvis) I think we should be good now!
#cpp #cplusplus
They can be amalgamated offline or directly in-browser at: pagghiu.github.io/SaneCppLibra...
Each amalgamation lists dependencies on other amalgamated libs and the LOC of its header vs. implementation sections.
Have fun!
#cpp
They can be amalgamated offline or directly in-browser at: pagghiu.github.io/SaneCppLibra...
Each amalgamation lists dependencies on other amalgamated libs and the LOC of its header vs. implementation sections.
Have fun!
#cpp
The following libraries do not allocate anymore! 🎉
✅ Async
✅ File
✅ FileSystem
✅ FileSystemWatcher
✅ FileSystemIterator
✅ Process
✅ Socket
See: pagghiu.github.io/SaneCppLibra...
#cpp
The following libraries do not allocate anymore! 🎉
✅ Async
✅ File
✅ FileSystem
✅ FileSystemWatcher
✅ FileSystemIterator
✅ Process
✅ Socket
See: pagghiu.github.io/SaneCppLibra...
#cpp
As always implemented for IOCP, kqueue / epoll and io_uring!
Documentation:
pagghiu.github.io/SaneCppLibra...
Commit:
github.com/Pagghiu/Sane...
#cpp
As always implemented for IOCP, kqueue / epoll and io_uring!
Documentation:
pagghiu.github.io/SaneCppLibra...
Commit:
github.com/Pagghiu/Sane...
#cpp
There are a ton of limitations but it's useful to serialize a data structure without blocking for IO or copying it for async IO.
Nice!
#cpp
There are a ton of limitations but it's useful to serialize a data structure without blocking for IO or copying it for async IO.
Nice!
#cpp
Anything SC::Segment based (Vector / String / VectorMap etc.) can be dumped and restored by just casting it (well, start_lifetime_as 🤭).
I guess it's not rocket science but recent additions make creating this simple and easy.
#cpp #cplusplus
Anything SC::Segment based (Vector / String / VectorMap etc.) can be dumped and restored by just casting it (well, start_lifetime_as 🤭).
I guess it's not rocket science but recent additions make creating this simple and easy.
#cpp #cplusplus
The test suite by itself is doing 20K allocations and ~50K re-allocations 🫠.
Is it MAYBE time to add support for custom allocators? 😅
The test suite by itself is doing 20K allocations and ~50K re-allocations 🫠.
Is it MAYBE time to add support for custom allocators? 😅
Hopefully this will not be so bad performance wise.
I could maybe replace that offset == 0 conditional with some branchless code to improve things further...
Hopefully this will not be so bad performance wise.
I could maybe replace that offset == 0 conditional with some branchless code to improve things further...
There is no pointer arithmetic in this case, correct.
There is no pointer arithmetic in this case, correct.
stackoverflow.com/a/67437638
stackoverflow.com/a/67437638
I have been pretty shocked to see GCC "optimizing away" some memcpy of the reconstructed pointer from "this" + offset.
To get avoid such UB I've had to add volatile to the methods reconstructing the original absolute pointer.
I have been pretty shocked to see GCC "optimizing away" some memcpy of the reconstructed pointer from "this" + offset.
To get avoid such UB I've had to add volatile to the methods reconstructing the original absolute pointer.
Compute MD5, SHA1 or SHA256 for a stream of bytes
🟢 C Bindings
🟥 SC::Http
Http parser, client and server
🟢 Improved to the level of self-hosting project blog (non-production)
Compute MD5, SHA1 or SHA256 for a stream of bytes
🟢 C Bindings
🟥 SC::Http
Http parser, client and server
🟢 Improved to the level of self-hosting project blog (non-production)
Files and directories notifications (Add, Remove, Rename, Modified).
🟢 Improve reliability
🟢 Support iOS using the (private) FSEvents framework
🟩 SC::FileSystem
File System Operations files and directories
🟢 Improve reliability
🟢 Symlinks creation
Files and directories notifications (Add, Remove, Rename, Modified).
🟢 Improve reliability
🟢 Support iOS using the (private) FSEvents framework
🟩 SC::FileSystem
File System Operations files and directories
🟢 Improve reliability
🟢 Symlinks creation
Minimal dependency based plugin system with hot-reload
🟢 Allow overriding sysroot path
🟢 Capture compiler and linker output
🟢 Use environment CFLAGS / LDFLAGS
🟢 QueryInterface-like mechanism
🟢 Include paths
🟢 Detect Visual Studio Path
Minimal dependency based plugin system with hot-reload
🟢 Allow overriding sysroot path
🟢 Capture compiler and linker output
🟢 Use environment CFLAGS / LDFLAGS
🟢 QueryInterface-like mechanism
🟢 Include paths
🟢 Detect Visual Studio Path
Create Child processes, chain them, read outputs.
🟢 Improve API ease of use
🟢 Improve stability and reliability on Posix
🟢 Support custom working directory
🟢 Support custom environment variables
🟢 Support ignoring child process stdout/stderr
Create Child processes, chain them, read outputs.
🟢 Improve API ease of use
🟢 Improve stability and reliability on Posix
🟢 Support custom working directory
🟢 Support custom environment variables
🟢 Support ignoring child process stdout/stderr
Minimal self-hosted build System where builds are described in C++
🟢 Linux: Makefiles
🟢 macOS: Makefiles + XCode
🟢 Windows: Visual Studio Projects
🟢 Multiple Configurations / Architectures / Projects
🟢 Documentation / Coverage
🟢 Downloads dependencies
Minimal self-hosted build System where builds are described in C++
🟢 Linux: Makefiles
🟢 macOS: Makefiles + XCode
🟢 Windows: Visual Studio Projects
🟢 Multiple Configurations / Architectures / Projects
🟢 Documentation / Coverage
🟢 Downloads dependencies
Single C++ files, self-bootstrapped on the fly, linking to Sane C++ Libraries for immediate execution.
They replace all shell scripts in the project with real C++ programs (repo / CI)
🟢 SC::Build - Build system
🟢 SC::Package - Host Tools downloader
🟢 SC::Format - Clang-Format helper
Single C++ files, self-bootstrapped on the fly, linking to Sane C++ Libraries for immediate execution.
They replace all shell scripts in the project with real C++ programs (repo / CI)
🟢 SC::Build - Build system
🟢 SC::Package - Host Tools downloader
🟢 SC::Format - Clang-Format helper
WIP example browser showcase for the library
🟢 Based on Dear ImGui and sokol libraries ❤️
🟢 Power Efficient: redraws on SC::Async IO or input events
🟢 Hot-reloaded on the fly through SC::Plugin
🟢 Integrates SC::Async with native event Loop
🟢 Supports macOS, iOS, Linux and Windows
WIP example browser showcase for the library
🟢 Based on Dear ImGui and sokol libraries ❤️
🟢 Power Efficient: redraws on SC::Async IO or input events
🟢 Hot-reloaded on the fly through SC::Plugin
🟢 Integrates SC::Async with native event Loop
🟢 Supports macOS, iOS, Linux and Windows
Think of a simplified libuv / Boost.ASIO 😌
🟢 No allocations!
🟢 Socket operations (send/receive/connect/accept)
🟢 File operations (read/write/close)
🟢 Child process watcher
🟢 Folder watcher
🟢 Background Threaded Work
Backends
🟢 epoll
🟢 io_uring
🟢 kqueue
🟢 IOCP
Think of a simplified libuv / Boost.ASIO 😌
🟢 No allocations!
🟢 Socket operations (send/receive/connect/accept)
🟢 File operations (read/write/close)
🟢 Child process watcher
🟢 Folder watcher
🟢 Background Threaded Work
Backends
🟢 epoll
🟢 io_uring
🟢 kqueue
🟢 IOCP
Check it out if you need to spawn some processes with I/O redirection!!! 🤭
pagghiu.github.io/SaneCppLibra...
Check it out if you need to spawn some processes with I/O redirection!!! 🤭
pagghiu.github.io/SaneCppLibra...
Today I'm implementing an Async Socket Streams abstraction (akin to node.js streams).
So far it can asynchronously read test data from a file, pipe it to a socket, read it from the other socket side and pipe it to a file.
Enjoy the video!
youtu.be/0x6TLV_ig-A
#cpp
Today I'm implementing an Async Socket Streams abstraction (akin to node.js streams).
So far it can asynchronously read test data from a file, pipe it to a socket, read it from the other socket side and pipe it to a file.
Enjoy the video!
youtu.be/0x6TLV_ig-A
#cpp