Commit 030632a9e227082b4bf0d38e0ca5a6242badb424
1 parent
71252402
Tweaked README
Showing
1 changed file
with
22 additions
and
11 deletions
README.md
| ... | ... | @@ -11,7 +11,18 @@ You write a Nim module and use some macros to generate a .st file on the side |
| 11 | 11 | containing the Smalltalk glue code. When you compile the Nim code the .st file |
| 12 | 12 | is automatically generated. You then file that into the image. |
| 13 | 13 | |
| 14 | -See full example in tests directory. | |
| 14 | +See full example in tests directory. Here is how to try it: | |
| 15 | + | |
| 16 | +- Install Nim, latest. See nim-lang.org. | |
| 17 | +- Clone squeaknim, its just a single source file really. | |
| 18 | +- Install FFI into your Squeak/Nim image. Old one. | |
| 19 | +- Compile the Test1.nim file using "nim c Test1.nim". Should give you Test1.st and libTest1.so/dll. | |
| 20 | +- Make sure the compiled libTest1.so/dll is loadable by the VM (copy to working dir for example) | |
| 21 | +- File in Test1.st that was generated. | |
| 22 | +- File in Test1-Test.st that has a SUnit test for the above glue code. | |
| 23 | +- Run in SUnit. Bask in green glory, or cry. | |
| 24 | + | |
| 25 | +The FFI should be the "good old" one - via Configurations in Pharo seems to work fine. Via SqueakMap worked in Squeak 5, I think I had to use "head". | |
| 15 | 26 | |
| 16 | 27 | ## Squeak FFI |
| 17 | 28 | |
| ... | ... | @@ -19,7 +30,7 @@ What follows is a text written by Sean DeNigris describing the FFI. You can |
| 19 | 30 | also see the code in the client image of course, with tests and class comments |
| 20 | 31 | etc. |
| 21 | 32 | |
| 22 | -## How does FFI work? | |
| 33 | +### How does FFI work? | |
| 23 | 34 | |
| 24 | 35 | Technically what happens is: |
| 25 | 36 | |
| ... | ... | @@ -146,7 +157,7 @@ Caveats |
| 146 | 157 | - If you crash Squeak when it is running the garbage collector, then |
| 147 | 158 | you know your FFI code is leaking bits into object memory [2] |
| 148 | 159 | |
| 149 | -What do I need to use FFI with Squeak? | |
| 160 | +### What do I need to use FFI with Squeak? | |
| 150 | 161 | |
| 151 | 162 | You need the FFI plugin, which is included with most VM's as of Squeak 3.6 |
| 152 | 163 | or so. |
| ... | ... | @@ -154,12 +165,12 @@ or so. |
| 154 | 165 | You can also build the plugin yourself. See VMMaker. |
| 155 | 166 | |
| 156 | 167 | References: |
| 157 | -[1] http://wiki.squeak.org/squeak/1414 | |
| 158 | -[2] http://wiki.squeak.org/squeak/2424 | |
| 159 | -[3] http://wiki.squeak.org/squeak/5716 | |
| 160 | -[4] http://wiki.squeak.org/squeak/2426 | |
| 161 | -[5] http://forum.world.st/squeak-dev-Alien-Squeak-FFI-issues-on-Snow-Leopard-td85608.html | |
| 162 | -[6] http://wiki.squeak.org/squeak/5846 | |
| 163 | -[7] http://forum.world.st/FFI-Callbacks-td54056.html#a54073 | |
| 164 | -[8] http://forum.world.st/Security-td99624.html#a99635: | |
| 168 | +1 http://wiki.squeak.org/squeak/1414 | |
| 169 | +2 http://wiki.squeak.org/squeak/2424 | |
| 170 | +3 http://wiki.squeak.org/squeak/5716 | |
| 171 | +4 http://wiki.squeak.org/squeak/2426 | |
| 172 | +5 http://forum.world.st/squeak-dev-Alien-Squeak-FFI-issues-on-Snow-Leopard-td85608.html | |
| 173 | +6 http://wiki.squeak.org/squeak/5846 | |
| 174 | +7 http://forum.world.st/FFI-Callbacks-td54056.html#a54073 | |
| 175 | +8 http://forum.world.st/Security-td99624.html#a99635: | |
| 165 | 176 | ... | ... |