Pustaka dan struktur data C yang portabel dan berdiri sendiri. (C99)
Setiap folder berdiri sendiri dengan satu pasangan header/sumber di dalamnya. Tidak ada
buat untuk perpustakaan, cukup salin file yang Anda inginkan.
misalnya, Jika Anda menginginkan logger, salin sc_log.h dan sc_log.c ke proyek Anda.
Ada 100% cakupan cabang di Linux dan CI berjalan
Sistem Operasi : Linux, MacOS, FreeBSD dan Windows Kompiler: GCC, Dentang, MSVC Lengkungan : x64, aarch64, armv6(32 bit), armv7(32 bit), ppc64le, s390x(big endian), riscv64 Sanitizer : valgrind dan clang/gcc sanitizer (alamat, tidak terdefinisi, thread)
Perpustakaan | Keterangan |
---|---|
susunan | Array/vektor generik |
penyangga | Buffer untuk variabel pengkodean/dekode, paling cocok untuk implementasi protokol/serialisasi |
kondisi | Pembungkus kondisi untuk Posix dan Windows |
crc32 | Crc32c, menggunakan instruksi CPU crc32c jika tersedia |
tumpukan | Min heap yang dapat digunakan sebagai max heap/antrian prioritas juga |
ini | Ini pengurai |
daftar tertaut | Daftar tertaut yang mengganggu |
penebang | penebang |
peta | Hashmap pengalamatan terbuka berkinerja tinggi |
peta memori | Pembungkus mmap untuk Posix dan Windows |
mutex | Pembungkus mutex untuk Posix dan Windows |
pilihan | Pengurai argumen Cmdline. Yang sangat mendasar |
kinerja | Utilitas benchmark untuk mendapatkan info penghitung kinerja melalui perf_event_open() |
antre | Antrian umum yang dapat digunakan sebagai dequeue/stack/list juga |
sc | Fungsi utilitas |
sinyal | Snprintf & Pengendali sinyal yang aman untuk sinyal (menangani CTRL+C, mencetak penelusuran balik saat mogok, dll) |
stopkontak | Soket pipa / tcp (juga soket domain unix) /Epoll/Kqueue/WSAPoll untuk Posix dan Windows |
rangkaian | Panjangnya diawali, string C diakhiri dengan null. |
benang | Pembungkus benang untuk Posix dan Windows. |
waktu | Fungsi waktu dan tidur untuk Posix dan Windows |
pengatur waktu | Implementasi roda waktu yang di-hash dengan operasi polling/pembatalan yang cepat |
uri | Pengurai uri dasar |
Apakah ini lebih baik daripada perpustakaan X?
Saya sering menggunakan perpustakaan ini untuk aplikasi sisi server berkinerja tinggi. Juga,
Saya peduli dengan kode yang dapat dibaca dan mudah di-debug. Singkatnya, perpustakaan ini menunjukkan
selera saya (pengorbanan) tentang kinerja/desain api/keterbacaan. Anda mungkin atau mungkin
tidak menyukainya.
Mengapa Anda tidak mengubah API di sini di X, agar lebih mudah digunakan?
Tolong kirimkan permintaan tarik tetapi pastikan Anda tidak memasukkan yang tidak terdefinisi
perilaku. Dimungkinkan untuk menyediakan API yang lebih baik, terutama untuk perpustakaan umum,
jika Anda tidak peduli dengan perilaku yang tidak terdefinisi. Saya mencoba menghindarinya.
Apa cara paling efisien untuk menggunakan perpustakaan ini?
Sama seperti kode lainnya. Tambahkan ke proyek Anda sebagai file sumber dan idealnya gunakan
-O3 -flto + PGO. Ini mungkin tidak membuat perbedaan apa pun untuk kasus penggunaan Anda.
Apakah perpustakaan X digunakan di produk apa pun?
Beberapa perpustakaan digunakan dalam produksi tetapi harap selalu menguji diri Anda sendiri.
Apakah ada pelepasannya?
Silakan gunakan cabang master. Itu dianggap stabil.
Apakah Anda akan menjaga API tetap stabil?
Tolong jangan mengharapkan API yang stabil. Perpustakaan-perpustakaan ini cukup bagus
kecil (kebanyakan kurang dari beberapa ratus baris kode) dan idealnya Anda
seharusnya membaca kode dan memahami fungsinya dan menyesuaikannya dengan Anda
kebutuhan. Jadi, Anda tidak boleh memperbarui perpustakaan secara membabi buta. Saya harap Anda bisa menanganinya
segala kemungkinan perbedaan API dengan mudah. Karena itu, saya akan melakukan yang terbaik untuk mempertahankannya
APInya stabil.