2 poin oleh GN⁺ 2025-03-14 | Belum ada komentar. | Bagikan ke WhatsApp
  • 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.

Belum ada komentar.