Releasing units without source code/id: what changed
Revision 0 to 1. Removed lines have a minus sign; added lines have a plus sign.
Title: Releasing units without source code/id
| Old | New | Line | |
|---|---|---|---|
| 1 | + | Ini dapat berguna untuk merilis unit FreePascal tanpa menerbitkan kode sumbernya: | |
| 2 | + | ||
| 3 | + | - Kode sumber berisi informasi hak milik. | |
| 4 | + | - Dalam pelajaran, karena anda ingin memaksa siswa untuk menggunakan sebuah unit hanya dengan interface (kontrak), dan tidak melihat pada implementasinya. | |
| 5 | + | ||
| 6 | + | FreePascal membolehkan anda untuk melakukannya dengan cara berikut. | |
| 7 | + | ||
| 8 | + | **Penyedia** unit (dan pemilik kode sumber) harus: | |
| 9 | + | ||
| 10 | + | - Mengkompilasi unit secara terpisah; direkomendasikan untuk memakai opsi **-Ur** (*Hasilkan file unit rilis*; lihat *User's Manual* untuk rinciannya) | |
| 11 | + | - Menerbitkan baik file ***.ppu** dan ***.o** yang dihasilkan. Juga lihat Seksi 3.3 pada *User's Manual* (*Compiling a unit*). | |
| 12 | + | ||
| 13 | + | **Pengguna** dari unit yang disediakan harus: | |
| 14 | + | ||
| 15 | + | - Mengkompilasi program menggunakan (*klien*), agar kompilator dapat menemukan file unit ***.ppu** dan ***.o** (misalnya melalui opsi kompilator **-Fu**). | |
| 16 | + | ||
| 17 | + | Selanjutnya, ada dua konteks kompilator dalam masalah itu: | |
| 18 | + | ||
| 19 | + | - Instalasi kompilator dari penyedia | |
| 20 | + | - Instalasi kompilator dari pengguna (klien) | |
| 21 | + | ||
| 22 | + | **Catatan** | |
| 23 | + | ||
| 24 | + | - Penyedia dan pengguna harus menggunakan **versi kompilator yang sama**. Meskipun kompatibilitas mundur antara unit terkompilasi tidak perna rusak demi keperluan, ini terjadi secara reguler untuk mendukung fitur baru atau pembetulan bug. | |
| 25 | + | - **Target OS** dari unit yang disediakan harus sama dengan target OS yang dipakai untuk mengompilasi program klien. | |
| 26 | + | - Jika unit yang disediakan tergantung pada unit lain *U*, maka unit *U* dari konteks klien perlu *kompatibel* dengan unit *U* dalam konteks penyedia. Untuk keperluan tersebut, kompilator embed yang menyediakan checksum dari **seksi interface** dari unit *U* dalam file ***.ppu** pada unit yang disediakan. Kompilator klien memeriksa embedded checksum terhadap checksum unit *U* dalam konteks klien. Jika checksums berbeda, maka kompilator klien akan mencoba mengompilasi ulang unit yang disediakan, dan ini akan gagal karena sumber tidak ada. Dengan opsi kompilator **-vu** anda mendapatkan informasi lengkap atas penanganan file unit, dan anda dapat mencari baris yang menyatakan *Recompiling ..., checksum changed for ...*. | |
| 27 | + | - Dalam keadaan tertentu, **unit System** dari konteks penyedia harus *kompatibel* dengan unit System dari konteks klien, karena setiap unit secara implisit tergantung pada unit System. Oleh karena itu, direkomendasikan untuk menggunakan *rilis stabel* dari kompilator untuk mengompilasi unit yang disediakan. | |
| 28 | + | - Mungkin ada beberapa opsi kompilator lain (selain setelan Target OS): | |
| 29 | + | - **-M** (*Mode*) | |
| 30 | + | - **-C** (*Checking*), seperti **-Cr** (*range checking*), **-Ci** (*i/o checking*), **-Co** (*overflow checking*), **-Ct** (*stack checking*) | |
| 31 | + | - **-Sa** (*Include assert statements in compiled code*) | |
| 32 | + | - **-O** (*Optimization*) | |
| 33 | + | - **-gl** (*Generating lineinfo code*) | |
| 34 | + | - Untik versions kompilator FreePascal lebih lama, nama dari file sumber unit yang disediakan semuanya harus dalam huruf kecil. Untuk versi terbaru kompilator, ini tidak lagi menjadi masalah. (*User's Manual* tidak mutakhir pada topik ini, saya kira. **Jika anda mengetahui lebih detail, misalnya dari versi mana ini berubah, maka silahkan taruh di sini.**) | |
| 35 | + | ||
| 36 | + | --- | |
| 37 | + | *From the Free Pascal wiki, page "Releasing units without source code/id", as it stood on 2009-04-07 after a change by Swen, out of the wiki's dump of 2024-05-26. Copyright stays with the author who wrote it, according to the old wiki's [[Licensing]] page. If you have concerns about this material, [message the admin](/wiki-contact).* |
