1 poin oleh GN⁺ 2024-09-27 | 1 komentar | Bagikan ke WhatsApp
  • Tcl/Tk 9.0 adalah rilis mayor terbaru Tcl dan Tk, menghadirkan fitur-fitur baru serta beberapa ketidakcocokan dibandingkan Tcl/Tk 8
  • Penandaan rilis terbaru adalah Tcl/Tk 9.0.4 dengan tanggal 26 Juni 2026
  • Tcl menyediakan kapasitas 64-bit untuk menangani nilai data yang melebihi 2GB, string dapat memiliki panjang sewenang-wenang dalam batas memori yang tersedia, dan list serta dictionary dapat memiliki sangat banyak elemen
  • Pemrosesan teks mendukung seluruh rentang code point Unicode, encoding baru seperti keluarga utf-16, utf-32, ucs-2, dan CESU-8, encoding profiles untuk mengontrol encoding I/O, serta default -encoding utf-8 untuk source
  • Tcl dapat me-mount file zip sebagai filesystem melalui zipfs, serta mendukung distribusi aplikasi bergaya starkit dengan arsip filesystem yang ditempelkan ke executable atau library
  • Mesin pemrosesan event Unix dikonfigurasi berbasis epoll atau kqueue bila tersedia, dan implementasi berbasis select tetap ada untuk platform tanpa system call tersebut
  • Ketidakcocokan utama di Tcl 9.0 mencakup nama variabel tak berkualifikasi yang kini diresolusikan di namespace saat ini, bukan global; respons default terhadap I/O malencoding berubah menjadi error (-profile strict); ~ pada path tidak lagi diinterpretasikan sebagai home directory; dan $::tcl_precision tidak lagi digunakan untuk mengontrol pembuatan string dari double
  • Dalam perubahan build dan platform, opsi build --disable-threads dihapus sehingga thread selalu diaktifkan, dan Windows memerlukan Windows 7 atau Windows Server 2008 R2 atau yang lebih baru
  • Untuk ekstensi C Tcl, binary yang dibangun untuk Tcl 8.6 atau lebih lama tidak berjalan di Tcl 9.0; kompatibilitas ABI Tcl 9.0 memang bukan target, tetapi dalam banyak kasus cukup rebuild untuk Tcl 9.0 selama tidak menggunakan fungsi API yang telah dihapus
  • Antarmuka publik C diperbarui dengan banyak argumen diperluas dari int ke Tcl_Size, penghentian dukungan untuk Tcl_ChannelTypeVersion di bawah 5, pengenalan versioning pada struct Tcl_ObjType, serta penghapusan makro CONST* dan berbagai fungsi API
  • Tk 9.0.0 tidak mendukung Tcl 8.6, dan penggunaan Tk 9.0.0 memerlukan Tcl 9.0.0 terlebih dahulu
  • Tk menyediakan tk sysnotify, tk print, dan tk systray untuk akses ke fitur notifikasi, output, dan tray OS
  • Image Tk mendukung SVG secara parsial, pembacaan/penulisan metadata pada photo image, serta akses ke alpha channel
  • Widget dan tema bawaan Tk kini sadar scaling, dukungan gesture dua jari ditingkatkan di lingkungan yang mendukung, dan “aqua” pada tk windowingsystem memerlukan macOS 10.10 atau yang lebih baru
  • Materi migrasi Tcl 9 tersedia melalui Migrating C extensions to Tcl 9 dan Migrating scripts to Tcl 9

1 komentar

 
GN⁺ 2024-09-27
Pendapat di Hacker News
  • Ini adalah rilis mayor pertama dalam 27 tahun. Karena struktur internalnya 64-bit, data bisa menjadi sangat besar, dan ada banyak fitur baru seperti dukungan Unicode penuh termasuk emoji terbaru, sistem berkas Zip, dan lainnya.
    Sebagian sisa lama juga dihapus, jadi beberapa program mungkin perlu diperbarui, tetapi kompatibilitasnya masih tergolong tinggi. Halaman di atas menautkan ke catatan rilis yang merinci fitur yang disertakan/dikecualikan.

    • Perubahan pada sistem berkas Zip benar-benar menggembirakan. Dulu, saat membuat aplikasi mandiri, komunitas memakai berbagai teknik dengan alat dan pengetahuan khusus; kini hal-hal itu dimasukkan ke rangkaian alat bawaan dengan cara standar, jadi ini perubahan yang bagus.
    • Saya penasaran mengapa tilde ~, notasi pintas praktis untuk menuju direktori Home, dihapus.
  • Para puris bahasa dan puris OOP ala 1990-an benar-benar tidak menyukai Tcl, tetapi ekosistemnya punya filosofi desain yang khas.
    Semuanya berupa string atau perintah, dan ekstensi OOP terasa agak seperti tambahan tempelan, tetapi jika Anda mencoba membuat GUI dengan Tcl/Tk murni alih-alih memakai Tcl lewat Python seperti tkinter, memakai antarmuka SQLite, menulis ekstensi C kecil, atau membungkus library, banyak hal ternyata berjalan begitu saja dengan baik.

    • Saya melihat sudut pandang menarik dalam tulisan antirez tentang Tcl [1]. Kalau ingatan saya benar, Redis memakai Tcl untuk skrip pengujian.
      Saya menemukannya lewat tautan di dokumentasi https://folk.computer, dan proyek ini juga memakai Tcl sebagai bahasa scripting. Untuk penggunaan seperti itu, mungkin tidak ada alasan khusus untuk membenci Tcl.
      [1] http://antirez.com/articoli/tclmisunderstood.html
    • Berkat Tcl, startup kami bisa terwujud, dan pengalaman serta pembelajaran dari saat itu menjadi titik awal OutSystems.
      Salah satu pelajarannya adalah bahwa saya tidak ingin lagi memakai bahasa dinamis tanpa compiler JIT untuk server web penuh. Bahasanya sendiri bagus, tetapi karena masalah performa, harus rutin menulis ulang library Tcl ke C itu tidak menyenangkan.
    • Ungkapan “semuanya berupa string atau perintah” bukan berlebihan. Benar-benar semuanya adalah perintah, sampai cara menulis komentar di sini terasa seperti “kenapa bisa begini?”: https://wiki.tcl-lang.org/page/comment
      Sebelum menulis komentar Anda harus mengakhiri perintah dengan ;, tanda kurung kurawal tidak boleh tidak berpasangan sehingga Anda tidak boleh mencoba mengomentari kode yang salah, dan Anda juga tidak bisa memasukkan backslash di dalam komentar. Meski begitu, ini dijelaskan sebagai fitur, karena saat menjalankan wish digunakan pola seperti di bawah ini.
      #!/bin/sh
      # the next line restarts using wish \
      exec wish8.0 "$0" "$@"
      Backslash diabaikan oleh shell, tetapi diparsing oleh wish.
    • Saya banyak berurusan dengan Tcl saat mengerjakan benchmark TPC di Citus.
      https://github.com/TPC-Council/HammerDB/blob/master/src/post...
      Tcl cukup layak sebagai bahasa skrip shell.
  • Fakta bahwa mesin pemrosesan event pusat Tcl dibangun di atas epoll atau kqueue saat tersedia, dan tetap menyediakan implementasi berbasis select untuk platform yang tidak mendukungnya, adalah perubahan besar.
    Salah satu alasan utama konkurensi Tcl dianggap usang dan berperforma rendah adalah karena Tcl bergantung pada select, padahal epoll dan kqueue sudah tersedia setidaknya selama 10 tahun. Tcl adalah salah satu bahasa yang saya sukai karena mudah untuk mulai digunakan dan metaprogramming-nya juga mudah.

    • Alasan utama Tcl dianggap berperforma rendah adalah karena operasi dasarnya kira-kira dua kali lebih lambat daripada CPython. CPython sendiri juga bukan tergolong cepat: https://news.ycombinator.com/item?id=41637953
      Alasan lainnya adalah kita belum benar-benar tahu cara menulis Tcl yang cepat, dan di thread itu saya tanpa sengaja menunjukkan hal tersebut.
  • Saya ingin merekomendasikan NaviServer [0]. Nama lamanya adalah AOLServer [1], sebuah web server yang sangat tangguh dan sudah lama terbukti di penggunaan nyata.
    Kalau itu adalah sesuatu yang dulu dipakai untuk menjalankan AOL, rasanya tidak perlu banyak penjelasan lagi. OpenACS [2] adalah proyek utamanya dan sudah ada sejak 1997; khususnya saat dipakai bersama Tcl, ini sangat kuat. Masih dipelihara, dan kini juga mendukung Tcl 9.
    Kombinasi JavaScript, Tcl, dan NaviServer, ditambah modul bawaannya sendiri seperti DNS Server, LDAP, dan Mail, menjadi alat yang kuat. Jika ingin mulai dengan Tcl dan pengembangan web, saya merekomendasikan mencoba keduanya bersama karena mudah menghasilkan sesuatu yang menarik.
    [0] https://wiki.tcl-lang.org/page/NaviServer
    https://github.com/naviserver-project/naviserver
    [1] https://news.ycombinator.com/item?id=35648805
    https://www.linuxjournal.com/article/6164
    [2] https://openacs.org/about/history
    https://openacs.org/

    • Ini adalah stack penuh nostalgia tempat saya belajar Tcl dan SQL pada pertengahan 1990-an. Saat itu saya bermain-main bukan dengan OpenACS, melainkan dengan ArsDigita Community System itu sendiri, pada masa ketika ArsDigita benar-benar masih ada.
      Saya juga ingat pernah mengikuti kelas gratis yang disponsori dan diajarkan langsung oleh ArsDigita di kantor mereka, entah di Pasadena, CA atau Glendale. Tidak terlalu mendalam atau panjang, tetapi bagus sebagai pengantar.
  • Bagi orang yang baru mengenal Tcl, pernah ada juga semesta alternatif tempat Tcl menjadi bahasa browser alih-alih JavaScript
    “Catatan kaki menarik: pendirian Netscape bertepatan dengan masa ketika saya meninggalkan Berkeley pada 1994 dan memutuskan akan ke mana di industri. Jim Clarke dan Marc Andreessen sempat menjajaki kemungkinan saya bergabung sebagai pendiri Netscape, tetapi pada akhirnya saya menolak. Saat berbicara dengan mereka, saya bahkan belum memutuskan untuk mengerjakan sesuatu yang terkait web. Itu adalah salah satu ‘seandainya’ terbesar dalam karier saya. Jika saya bergabung dengan Netscape, cukup mungkin Tcl menjadi bahasa browser alih-alih JavaScript, dan dunia akan berbeda! Namun jika dipikir kembali, saya tidak yakin Tcl sebenarnya akan menjadi bahasa yang lebih baik untuk web dibanding JavaScript, jadi mungkin saja yang terjadi memang hal yang benar.”
    Sumber: https://pldb.io/blog/JohnOusterhout.html

    • Bisa saja. Menurut saya salah satu alasan utama JavaScript berhasil mengakar adalah karena tidak punya beban historis besar, sehingga para perancangnya bisa membawanya ke arah yang dibutuhkan
      Bahasa apa pun yang dipakai lebih dari beberapa orang, sebagus apa pun, akan membawa semacam beban. Jadi di semesta alternatif itu, ekosistem bahasa skrip browser mungkin bisa jauh lebih terfragmentasi
    • Pekerjaan pada subset aman Tcl untuk web sampai sekarang pun bisa dimanfaatkan untuk menjalankan skrip yang tidak tepercaya di sandbox yang mudah dikelola
      Jika mau, perintah bisa dihapus cukup banyak sampai bahasanya tidak lagi Turing-complete
    • Menariknya, plugin browser Tcl sudah ada setidaknya sejak 1996
      https://sunsite.icm.edu.pl/pub/programming/tcl/plugin/
      Saya juga ingat sebelum itu ada sesama mahasiswa yang datang ke lab komputer dan berkata, “Lihat, sekarang ada plugin TK untuk Mosaic juga!” Itu bukan lagi masa ketika orang berkata “seperti gopher dengan mouse!”, tetapi belum terlalu lama setelahnya
      Namun untuk memakai plugin Tcl, pengguna harus melakukan sesuatu sendiri, sedangkan JavaScript, setelah masuk, tersedia secara bawaan
    • Bahkan jika itu terjadi, saya tidak merasa dunia akan terus bertahan di TCL. JavaScript cukup bagus sehingga orang-orang mau menoleransinya, tetapi TCL jelas tidak demikian
      Mungkin yang lebih mungkin adalah TCL hadir bersama sesuatu yang lain, lalu TCL akhirnya ditandai untuk dihentikan
    • Saya sepenuhnya setuju dengan kalimat “mungkin saja yang terjadi memang hal yang benar”
      Saya tidak ingin melihat kode seperti set x [ expr $y + $z ] tersebar di mana-mana. Sebagai bahasa perintah, itu tidak terlalu buruk sih
  • Tidak berlebihan kalau saya mengatakan benar-benar menyukai Tcl. Saya hanya sempat memakainya sebentar saat menulis skrip IRC XiRCON pada akhir 1990-an, tetapi itu bahasa yang elegan, sederhana, mudah dipelajari, dan fleksibel sampai-sampai layak disebut Lisp untuk manusia
    Saya berharap bahasa ini lebih populer, dan senang melihatnya masih hidup dan bergerak

    • Pengalaman saya dengan Tcl hanya sebatas menulis skrip bot IRC, tetapi saya hanya punya kenangan baik dari pengalaman itu
    • Saya menulis skrip TCL untuk klien IRC pada era 90-an, dan itu benar-benar menyenangkan. Untuk kegunaan tersebut, bahasanya sangat bagus
      Namun bahasa utama saya yang lain saat itu adalah assembly x86, jadi mungkin standar saya untuk terkesan memang rendah
    • Untuk disebut “Lisp untuk manusia”, ada upvar
  • Penulis Tcl dan Tk adalah Profesor John Ousterhout, dan buku desain perangkat lunaknya sudah terbit sampai edisi ke-2
    A Philosophy of Software Design:
    https://web.stanford.edu/~ouster/cgi-bin/book.php

    • Buku ini benar-benar luar biasa, dan saya sedang membacanya sekarang. Saya membaca satu bab, memikirkannya sedalam mungkin, lalu menerapkan pelajarannya dengan menulis ulang proyek saya saat ini
      Sekarang saya sudah sampai bab 11, “Design it Twice”, jadi mungkin setelah selesai membaca, saya akan menulis ulang semuanya dari atas sampai bawah. Saat ini modelnya hanya menaruh variabel di core Python minimal dan sisanya di OpenSCAD, tetapi dalam implementasi baru saya berencana menaruh sebanyak mungkin hal di Python dan menggunakannya melalui OpenPythonSCAD https://pythonscad.org/
  • Saya sangat menyukai bahasanya, tetapi belakangan tidak banyak memakainya. Saya penasaran apakah di Linux pun masih menghasilkan GUI gaya 1995
    Kalau saja ada dukungan GUI Linux yang cukup masuk akal, setara dengan yang sudah lama memungkinkan di platform lain, saya mungkin masih akan memakainya sampai sekarang

    • Mesin tema sudah masuk sekitar 15 tahun lalu. Tema bawaan terlihat cukup usang, tetapi ada banyak tema lain: https://wiki.tcl-lang.org/page/List+of+ttk+Themes
      Namun tangkapan layar tema inti mengacu pada 8.5/8.6, dan khususnya tema bawaan sedikit berubah di Tk 9. Jebakannya adalah mesin tema memakai widget baru miliknya sendiri, jadi agar aplikasi mendapat tema, aplikasi harus memakai API baru. Kalau kodenya dari 1995 atau 2005, GUI yang keluar tetap gaya 1995
    • Saya masih ingat memakai Tkinter saat belajar Python. Ada GUI lain, tetapi lebih merepotkan mencari contoh yang berjalan sebagai GUI modern
      Dokumentasinya terlalu lama berpusat pada Tk(inter), sehingga kebanyakan orang tampaknya memilihnya seperti pilihan default. Dukungan GUI Python sudah membaik, tetapi mungkin popularitas penggunaannya untuk machine learning/AI ikut berpengaruh. Karena Tcl kurang populer, Anda harus memeriksa lebih teliti untuk menemukan dokumentasi cara memakai GUI modern
  • Belakangan ini saya hanya sempat menyentuh Tcl sebatas mengerjakan portfile MacPorts
    Kalau sekarang ada yang memakainya untuk keperluan lain, saya penasaran mengapa mereka memakainya. Saya tidak membenci bahasanya, tetapi juga tidak sampai menyukainya

    • Menurut saya Tcl lebih mirip Lisp untuk programmer C. Ia menyediakan kemampuan metaprogramming yang didapat dari Lisp, tetapi dalam bahasa yang terlihat seperti C, cocok dipakai bersama C, jauh lebih intuitif daripada bahasa shell pada umumnya, dan bahkan punya GUI lintas platform
      Programmer Tcl yang mahir bisa melakukan hal-hal seperti sihir. Dari 2005 sampai 2015 saya hampir sepenuhnya memprogram dengan Tcl/Tk dan benar-benar menyukainya. Setelah itu saya lebih sering memakainya untuk skrip ringan daripada menulis aplikasi, tetapi ketika harus menulis skrip otomasi tingkat sistem operasi, Tcl masih menjadi pilihan pertama saya
    • Penggunaan standarnya antara lain BigIP iRules[0] pada perangkat jaringan F5 dan perangkat A10, orkestrasi superkomputer Argonne National Labs[1], Tealeaf[2], Python Tkinter[3], dan sebagainya
      Alasan saya memakainya setiap hari adalah keseimbangannya yang bagus antara sisi mirip Lisp dan kesederhanaan sebagai bahasa scripting, serta antarmuka C-nya yang luar biasa. REPL-nya juga cukup baik, dan kita bisa menulis ekstensi dalam C lalu menumpuknya seolah-olah 100% Tcl kelas satu. Ini sebagian besar, atau mungkin sepenuhnya, karena Tcl adalah bahasa yang sangat sederhana[4] dan memiliki homoiconicity[5]. Menyenangkan untuk dikembangkan dan digunakan
      [0] https://community.f5.com/kb/technicalarticles/irules-concept...
      [1] https://www.mcs.anl.gov/~wozniak/papers/Swift_Tcl_2015.pdf
      [2] https://www.acoustic.com/pdf/Acoustic-Experience-Analytics-%...
      [3] https://docs.python.org/3/library/tkinter.html
      [4] https://www.tcl-lang.org/man/tcl/TclCmd/Tcl.htm
      [5] https://stackoverflow.com/questions/6492704/what-exactly-doe...
    • Tcl adalah bahasa scripting di industri EDA. Jika Anda merancang chip komputer, berarti Anda memakai TCL. Cadence dan Synopsys sudah menjadikan TCL sebagai standar selama lebih dari 30 tahun
      Kelebihannya adalah kita bisa mengendalikan tool EDA seperti perintah shell script semacam run_my_task -option_a -option_B. Kalau Anda tidak merancang chip, tidak ada alasan untuk memakainya, dan bahasanya sendiri mengerikan. Semakin cepat industri EDA meninggalkan TCL, semakin baik
    • Richard Hipp, pencipta SQLite, mengatakan bahwa SQLite ditulis dengan Tcl. Mesin database-nya sendiri tentu saja ditulis dalam C, tetapi test suite yang jauh lebih besar sebagian besar ditulis dalam Tcl
      Dan test suite itulah yang membuat SQLite menjadi mesin yang dapat dipercaya seperti sekarang. Test suite tersebut terus dipelihara, sementara mesinnya telah ditulis ulang secara keseluruhan atau sebagian
    • Saya beberapa kali memakai Tcl karena Freewrap. Dengan kode yang sangat sedikit, saya bisa membuat aplikasi Windows dengan GUI dan mendistribusikannya dengan mudah sebagai file executable
      Saya membuat aplikasi backup untuk aplikasi penjualan online, aplikasi untuk memperbaiki file POS bermasalah milik jaringan ritel besar, aplikasi kecil yang menyalin Forms/Reports ke server lalu menjalankan kompilasi dan memasukkan file baru ke git, serta wrapper gs agar departemen media lebih mudah menggabungkan beberapa PDF menjadi satu. Semuanya hanya sekitar satu atau dua halaman kode
  • Ini lebih penting daripada Python 3.13
    Bravo !!!!
    Saya menunggu Scilab dan Python didistribusikan dengan menyertakan Tcl/Tk 9.0. Rilis terbaru Next Scripting tampaknya sudah siap untuk 9.0. Bagian Undroidwish dan Binary Releases di halaman resminya layak dipantau