Ekosistem sumber terbuka Nix kini menyaksikan perkembangan menarik dengan kemunculan alat nix-ninja, yang menjanjikan revolusi dalam aliran kerja kompilasi dengan memanfaatkan ciri derivasi dinamik eksperimental Nix. Inovasi ini telah mencetuskan minat yang ketara dalam komuniti pembangun, terutamanya di kalangan mereka yang bekerja dengan sistem pembinaan kompleks.
Derivasi Dinamik: Jalan Menuju Pelancaran Stabil
Salah satu aspek yang paling hangat dibincangkan dalam komuniti adalah garis masa untuk menstabilkan derivasi dinamik dalam Nix. Buat masa ini, nix-ninja bergantung pada ciri-ciri eksperimental dari versi Nix yang belum dilancarkan, yang menimbulkan persoalan tentang bila ciri-ciri ini mungkin akan disokong secara rasmi.
Seorang pembangun teras Nix yang terlibat dengan derivasi dinamik telah memberikan sedikit penjelasan mengenai pelan tindakan, menerangkan bahawa derivasi dinamik bergantung pada derivasi berasaskan kandungan, yang telah berada dalam keadaan ciri eksperimental untuk beberapa waktu. Walau bagaimanapun, dengan usaha yang tertumpu dan pengurusan skop yang baik, penstabilan boleh dicapai dalam masa terdekat. Pembangun tersebut menggambarkan kerja yang masih perlu dilakukan sebagai tidak begitu banyak walaupun ia merupakan satu siri yak shaves - istilah yang merujuk kepada rantaian tugas yang seolah-olah tidak berkaitan yang mesti diselesaikan sebelum menangani matlamat utama.
Potensi Prestasi untuk Pembinaan Kompleks
Implikasi prestasi nix-ninja sangat menjanjikan. Alat ini bertujuan untuk membolehkan kompilasi berperingkat sebenar, di mana mengubah satu fail C/C++ di mana-mana dalam graf pembinaan hanya akan memerlukan kompilasi semula fail tersebut dan penyambungan semula hanya pada fail boleh laksana atau perpustakaan perkongsian yang terjejas.
Walaupun masih dalam pembangunan, ujian awal menunjukkan bahawa overhed pengasingan Nix boleh diabaikan untuk tugas kompilasi berperingkat. Walau bagaimanapun, beberapa ciri masih tiada, seperti pengendalian yang betul untuk sasaran yang bergantung pada fail sumber yang dijana (seperti penghurai bison Nix), yang kini sedang dikesan sebagai isu terbuka.
Matlamat jangka panjang adalah jika anda tidak mengubah pengepala dan hanya mengubah satu fail C/C++, di mana-mana dalam graf pembinaan untuk keseluruhan sistem anda, anda sepatutnya mendapat kompilasi semula yang cepat hanya untuk fail tersebut + penyambungan semula hanya pada fail boleh laksana/perpustakaan perkongsian di mana fail objek output dibina.
Ciri-ciri Utama nix-ninja
- Menganalisis fail ninja.build dan menjana derivasi bagi setiap unit kompilasi
- Menyimpan input & output pembinaan dalam derivasi berasaskan kandungan untuk penambahbaikan berperingkat yang terperinci
- CLI yang serasi untuk ninja (boleh digunakan sebagai pengganti langsung)
- Menyokong pelaksanaan secara tempatan atau dalam derivasi Nix
Keperluan
- Nix dengan ciri-ciri eksperimen diaktifkan:
- nix-command
- dynamic-derivations
- ca-derivations
- recursive-nix
Pencapaian Pembangunan
- 0.1.0: Keluaran pertama yang memberi tumpuan kepada ketepatan
- 0.2.0: Ciri-ciri prestasi utama untuk menjadikan pembinaan berperingkat lebih produktif
Fokus Strategik pada Fail Pembinaan Ninja
Para pembangun memilih untuk menyasarkan fail pembinaan Ninja secara khusus, yang terbukti menjadi keputusan strategik. Dengan menyokong Ninja sebagai perwakilan graf pembinaan, nix-ninja boleh berfungsi dengan pelbagai sistem pembinaan popular seperti CMake, meson, premake, dan gn yang menghasilkan fail Ninja.
Pendekatan ini sangat relevan untuk komuniti Nix kerana Nix sendiri menggunakan meson dan menghasilkan fail Ninja. Pilihan ini membolehkan pendekatan berperingkat dan boleh disumbangkan oleh ramai orang untuk meningkatkan prestasi pembinaan di seluruh ekosistem, bermula dengan projek besar seperti LLVM dan Chromium yang akan mendapat manfaat paling besar daripada kompilasi berperingkat.
Ketika nix-ninja terus berkembang menuju pencapaian 0.1.0 yang memberi tumpuan kepada ketepatan dan seterusnya pelancaran 0.2.0 yang menyasarkan ciri-ciri prestasi, projek ini mewakili langkah yang menjanjikan ke arah menjadikan pembinaan Nix lebih cekap tanpa memerlukan penulisan semula besar-besaran sistem pembinaan sedia ada. Bagi pembangun yang bekerja dengan kod sumber yang kompleks, alat ini boleh meningkatkan produktiviti secara ketara dengan mengurangkan masa kompilasi dan menyediakan peningkatan berperingkat yang lebih terperinci melalui derivasi berasaskan kandungan Nix.
Rujukan: nix-ninja