- Pengalaman bekerja selama 20 tahun sebagai freelancer Ruby on Rails berlanjut ke proyek Common Lisp, tetapi akumulasi keterbatasan performa, portabilitas, dan lingkungan eksekusi membuatnya kembali memilih C
- cl-facts memiliki triple store yang cepat dan transaksi atomik yang bisa dinest, tetapi waktu pengembangannya yang panjang juga berujung pada hilangnya klien
- Ketidakpuasan terhadap mesin virtual, container berbasis Linux cgroups, dan garbage collector mengarah pada penilaian bahwa C masih menjadi fondasi praktis untuk perangkat lunak sistem
- Pekerjaan yang dimulai dari libc3 meluas menjadi gagasan bahasa C3, interpreter ic3, dan compiler c3c, lalu kemudian berubah nama menjadi KC3 karena konflik nama
- Saat ini KC3 mencakup basis data graf yang di-port ke C89, REPL ikc3, server web MVC kc3_httpd, hingga situs dokumentasi berbasis implementasi C untuk Markdown-to-HTML
Proses kerja Common Lisp yang berujung pada penulisan ulang dalam C
- Setelah belajar selama 5 tahun di sekolah komputer Prancis dan bekerja 20 tahun sebagai pengembang freelancer Ruby on Rails, Common Lisp yang semula dianggap bisa dipelajari singkat justru berkembang menjadi proyek yang semakin besar
- Dengan Common Lisp ia menghasilkan kode C untuk membuat parser ASN.1 dan sistem kueri, dan pekerjaan ini berkembang menjadi server SNMP kustom Common Lisp-to-C
- Setelah itu ia menulis beberapa paket Common Lisp
- cl-unix-cybernetics menjadi proyek dengan bintang terbanyak di antara repositori GitHub miliknya
- Ia juga menulis cl-streams dan cffi-posix
- cl-facts adalah triple store yang dapat digunakan sebagai basis data graf Common Lisp
- cl-facts menghasilkan performa cepat, transaksi atomik, transaksi yang bisa dinest, kompatibilitas
unwind-protect, serta kemudahan penggunaan yang cukup dengan mempelajari 3 makro - cl-facts dipresentasikan sebagai lightning talk di European Lisp Symposium di Belgia, dan slide presentasinya tersedia di facts.pdf
- Pengembangan paket Common Lisp memakan waktu lama hingga menyebabkan hilangnya klien, tetapi Common Lisp dinilai sebagai alat untuk generasi mendatang
C, KC3, dan susunan saat ini
- Pengalaman bahwa mesin virtual membuang CPU dan bandwidth untuk emulasi, serta container berbasis Linux cgroups terus memunculkan masalah RCE dan eskalasi hak akses, membuat pilihannya berpusat pada OpenBSD
- Ia menghindari alat DevOps seperti Terraform dan Ansible, dan juga melihat orang-orang yang tidak puas bukan hanya pada VM dan container tetapi juga pada bahasa pemrograman itu sendiri
- Contoh upaya membuat game strategi di Clojure dengan ribuan unit yang masing-masing memiliki persepsi dunianya sendiri gagal karena garbage collector
- Proyek Common Lisp juga memiliki cakupan penerapan yang terbatas karena garbage collector, sementara garbage collector JVM dinilai sebagai keunggulan komersial yang memerlukan biaya besar untuk membuatnya dengan baik
- Dengan mempertimbangkan performa dan portabilitas, ia menilai pilihan yang masuk akal tanpa alat tambahan adalah C
- Linux ditulis dalam C
- OpenBSD ditulis dalam C
- GTK+ ditulis dalam pure C berorientasi objek
- GNOME ditulis dalam C
- Banyak aplikasi desktop Linux juga ditulis dalam C lama
- Berawal dari pustaka utilitas libc3, proyek ini berkembang menjadi bahasa C3, interpreter ic3, dan gagasan compiler c3c
- Ia membuat buffer dan struktur data UTF-8 dapat berpindah dengan cepat, dan menerapkan bounds-check dengan menerima biaya memori tambahan
- Dengan defensive programming sebagai prinsip utama, ia mengarahkan pengembangan untuk menekan bug menjadi 0 sejak awal, dan menyatakan bahwa kode KC3 dijalankan tanpa implikasi keamanan
- Interpreter awal dibuat dalam bentuk yang memproses tags, yaitu enum-tagged union yang memuat semua tipe data bahasa, di dalam REPL
- Tiga tahun kemudian, refactor 5 lapis selesai, semua pengujian kembali lulus, dan server web juga kembali berada dalam kondisi tidak rusak
- Nama bahasa diubah menjadi KC3 karena C3 sudah digunakan
- Basis data graf Common Lisp yang sudah ada, cl-facts, di-port ke C89
- Sebagian besar ditulis selama masa lockdown Covid-19 tahun 2020
- Mencakup penambahan dan penghapusan triple, sistem kueri rekursif, transaksi, logging, dan persistensi
- Desain asli Common Lisp diimplementasikan hampir apa adanya dalam C89
- KC3 juga mencakup parser dan generator untuk menangani makna formal dari berbagai tipe data algoritmik
- Termasuk Structs, Linked lists, Maps, Hash tables, Time, Complex, Rationals, Tuples, Code blocks, Quotes, Unquotes, Copy on write, Skip lists, Sets, dan lainnya
- Ada makro, dan contoh akan dibahas di tulisan berikutnya
- Mendapat inspirasi besar dari José Valim dan pekerjaannya di Elixir
- REPL ikc3 mem-parsing input dari keyboard atau file dan mengeluarkan hasil evaluasi KC3 ke standard output, serta digunakan untuk sebagian besar tahap 2 unit test KC3
- kc3_httpd adalah server web dengan framework MVC, dan saat ini digunakan untuk menghasilkan halaman web
- Tulisan tentang Common Lisp mencatat 700 tayangan, dan situs dokumentasi ditulis dengan kc3_httpd serta implementasi C Markdown-to-HTML yang diperluas
Belum ada komentar.