ivo@setyadi:~$ ivo.blogspot.com

# catatan teknis, sejak 2001

TurboFieldfare jalankan Gemma 4 di Mac RAM rendah

TurboFieldfare adalah runtime Swift dan Metal yang menjalankan Gemma 4 26B-A4B dengan menggunakan sekitar dua gigabyte RAM. Sistem ini memotong expert weights dari SSD untuk menjaga model tetap di memori, sehingga dapat berjalan di MacBook Air M2 8GB. Proyek ini mencakup aplikasi Mac native, CLI, dan server yang kompatibel dengan OpenAI, semuanya dibangun khusus untuk Apple Silicon. Alat ini layak dicoba untuk local inference pada hardware berkapasitas memori rendah yang ingin menghindari overhead dari wrapper umum. Kekurangannya adalah kecepatan decode pada hardware M2 dasar yang lambat, hanya menghasilkan lima hingga enam token per detik. Turbine ini tidak cocok untuk tugas high-throughput atau Mac berbasis Intel. sumber: https://github.com/drumih/turbo-fieldfare versi bahasa Inggris: https://home.wordpress.com/2026/09/21/turbofieldfare-runs-gemma-4-on-low-ram-macs/

Typedef

2006-03-28 · #Programming

Meski sering dianggap sebagai storage class, typedef sebenarnya bukan. Ia memungkinkan kita memperkenalkan sinonim untuk tipe yang sebetulnya bisa dideklarasikan dengan cara lain. Nama baru itu menjadi setara dengan tipe yang kita inginkan, seperti contoh berikut.

typedef int aaa, bbb, ccc;
typedef int ar[15], arr[9][6];
typedef char c, *cp, carr[100];

/* now declare some objects */

/* all ints */
aaa     int1;
bbb     int2;
ccc     int3;

ar      yyy;    /* array of 15 ints */
arr     xxx;    /* 9*6 array of int */

c       ch;     /* a char */
cp      pnt;    /* pointer to char */
carr    chry;   /* array of 100 char */

Aturan umum memakai typedef: tulis dulu deklarasinya seolah-olah Anda sedang mendeklarasikan variabel bertipe yang diinginkan. Di tempat deklarasi itu tadinya memperkenalkan nama variabel, menambahkan typedef di depannya membuat yang lahir bukan variabel melainkan nama tipe baru. Nama tipe baru itu lalu bisa dipakai sebagai awalan deklarasi variabel bertipe tersebut.

Penggunaan typedef tidak terlalu sering terlihat di kebanyakan program; biasanya hanya muncul di header file dan jarang jadi urusan koding sehari-hari.

Ia kadang dipakai pada aplikasi yang menuntut portabilitas sangat tinggi: di sana tipe-tipe baru didefinisikan untuk variabel dasar program, lalu typedef yang sesuai dipakai untuk menyesuaikan program dengan mesin target. Kalau berlebihan, hasilnya adalah kode yang sulit dibaca programmer C dari lingkungan lain. Kira-kira begini rasanya:

/* file 'mytype.h' */
typedef short   SMALLINT        /* range *******30000 */
typedef int     BIGINT          /* range ******* 2E9 */

/* program */
#include "mytype.h"

SMALLINT        i;
BIGINT          loop_count;

Di sebagian mesin, jangkauan int tidak cukup untuk BIGINT, sehingga harus di-typedef ulang menjadi long.

Untuk memakai ulang nama yang sudah dideklarasikan sebagai typedef, deklarasinya harus memuat setidaknya satu type specifier supaya tidak ambigu:

typedef int new_thing;
func(new_thing x){
        float new_thing;
        new_thing = x;
}

Perlu diingat, typedef hanya bisa mendeklarasikan tipe nilai kembalian sebuah fungsi, bukan tipe fungsi secara keseluruhan. Tipe keseluruhan mencakup informasi parameter fungsi, bukan cuma tipe kembaliannya.

/*
* Using typedef, declare 'func' to have type
* 'function taking two int arguments, returning int'
*/
typedef int func(int, int);

/* ERROR */
func func_name{ /*....*/ }

/* Correct. Returns pointer to a type 'func' */
func *func_name(){ /*....*/ }

/*
* Correct if functions could return functions,
* but C can't.
*/
func func_name(){ /*....*/ }

Kalau sebuah typedef dengan identifier tertentu sedang berada dalam scope, identifier itu tidak boleh dipakai sebagai formal parameter fungsi. Sebabnya, deklarasi seperti berikut menimbulkan masalah:

typedef int i1_t, i2_t, i3_t, i4_t;

int f(i1_t, i2_t, i3_t, i4_t)/*THIS IS POINT 'X'*/

Compiler yang membaca deklarasi fungsi itu sampai di titik ‘X’ dan masih belum tahu apakah yang dilihatnya deklarasi fungsi, yang pada dasarnya mirip

int f(int, int, int, int) /* prototype */

atau

int f(a, b, c, d) /* not a prototype */

— persoalannya (dalam kasus terburuk) baru selesai setelah melihat apa yang ada sesudah titik ‘X’: kalau titik koma berarti tadi deklarasi, kalau { berarti tadi definisi. Aturan yang melarang nama typedef jadi formal parameter membuat compiler selalu bisa memastikan apakah ia sedang memproses deklarasi atau definisi, cukup dengan melihat identifier pertama sesudah nama fungsi.

Typedef juga berharga saat kita hendak mendeklarasikan sesuatu yang sintaksnya menyiksa, semisal ‘array sepuluh pointer ke array lima integer’, yang bikin panik bahkan orang yang sudah terlatih. Menyembunyikannya di balik typedef berarti Anda cukup membacanya sekali, sekaligus bisa memecahnya jadi potongan yang lebih mudah dicerna:

typedef int (*a10ptoa5i[10])[5];
/* or */
typedef int a5i[5];
typedef a5i *atenptoa5i[10];

Coba sendiri!

Sumber: The C Book – Typedef

versi bahasa Inggris: https://home.wordpress.com/2006/03/28/typedef/

$ cd ~/

ivo@setyadi:~$