Komunitas C++ sedang aktif membahas CXXStateTree, sebuah library hierarchical state machine baru untuk C++20, dengan fokus khusus pada klaim alokasi memorinya dan bagaimana perbandingannya dengan solusi yang sudah ada. Meskipun library ini menjanjikan fitur-fitur modern dan manfaat performa, beberapa kekhawatiran teknis telah muncul dari umpan balik pengembang.
Fitur Utama Library
- API builder yang lancar dengan DSL berbasis lambda
- Transisi state berbasis event
- Guard dan action opsional untuk transisi
- Integrasi Google Test
- Code coverage dengan Codecov
- Implementasi header-only
- Lisensi MPL2.0
Kontroversi Alokasi Memori Memicu Kekhawatiran Pengembangan Embedded
Klaim library tentang zero heap allocation telah menarik perhatian dari pengembang yang memperhatikan bahwa kode menggunakan container standar seperti lists dan unordered maps. Maintainer proyek mengklarifikasi bahwa ini berarti zero allocation setelah pembangunan state tree, namun perbedaan ini telah menimbulkan pertanyaan penting bagi pengembang sistem embedded. Aplikasi safety-critical, khususnya yang mengikuti panduan MISRA, sering kali memerlukan eliminasi lengkap alokasi heap dan memori yang dialokasikan sebelumnya pada inisialisasi sistem. Hal ini telah mengarah pada permintaan fitur untuk versi yang benar-benar zero-allocation yang akan cocok untuk perangkat embedded dengan sumber daya terbatas.
MISRA: Panduan Motor Industry Software Reliability Association untuk keamanan perangkat lunak otomotif
Kompetisi dengan Library yang Sudah Mapan Menimbulkan Pertanyaan Diferensiasi
Anggota komunitas telah mempertanyakan bagaimana CXXStateTree membedakan dirinya dari alternatif yang sudah mapan seperti Boost.Ext.SML (State Machine Language). Perbandingan ini telah memicu diskusi teknis tentang pendekatan implementasi, dengan beberapa pengembang mencatat perbedaan menarik dalam cara library-library ini menangani string literals dan optimisasi compile-time. Sementara SML menggunakan user-defined literals yang canggih untuk memproses string pada compile time, CXXStateTree tampaknya mengambil pendekatan yang lebih langsung yang mungkin memiliki karakteristik performa yang berbeda.
Perdebatan Standar Kode Muncul Terkait Penggunaan Pragma Once
Diskusi yang tidak terduga namun penuh gairah telah muncul seputar penggunaan #pragma once
library untuk include guards. Komunitas terbagi antara mereka yang melihatnya sebagai standar modern yang didukung oleh semua compiler utama (GCC, Clang, MSVC) dan tradisionalis yang lebih memilih include guards yang compliant dengan standar. Perdebatan ini mencerminkan ketegangan yang lebih luas dalam komunitas C++ antara kemudahan praktis dan kepatuhan standar yang ketat, dengan beberapa pengembang berargumen bahwa fitur non-standar menciptakan risiko yang tidak perlu.
Persyaratan Compiler
- Diperlukan dukungan compiler C++20
- GCC >= 10
- Clang >= 11
- MSVC >= 2019
- GoogleTest (diunduh otomatis melalui CMake )
Pengembangan Masa Depan dan Keterlibatan Komunitas
Maintainer proyek telah menunjukkan responsivitas terhadap umpan balik komunitas, mendorong pengguna untuk membuka GitHub issues untuk berbagai saran termasuk packaging vcpkg, Python bindings, dan compilation switches untuk target embedded. Roadmap library menunjukkan rencana ambisius termasuk dukungan coroutine dan dokumentasi lengkap, menunjukkan pengembangan aktif meskipun menghadapi tantangan saat ini.
Diskusi-diskusi ini menyoroti kompleksitas menciptakan library C++ baru dalam ekosistem yang matang di mana klaim performa, kepatuhan standar, dan diferensiasi dari solusi yang ada semuanya menghadapi pengawasan komunitas yang ketat.
Referensi: CXXStateTree