Forwarding the original email.
From: MORGAN LEE GUAN HAN 1211107272@student.mmu.edu.my
Sent: Saturday, November 29, 2025 12:08 AM
To: Aik-Siong Koh askoh@askoh.com
Subject: Pharo CIG Crash Issue
Dear Pharo Team,
I am currently attempting to replicate what Esteban Lorenzano did for this Youtube Videohttps://www.youtube.com/watch?v=U9fpvZJaFx4 (Esteban Lorenzano - Pharo-CIG: C++ Interface Generator - 23 April 2025), which is to generate C Bindings for Pharo uFFI to call, in Windows 11. Unfortunately, I am unable to replicate the results of the video. The results of my attempts leads to Pharo's Virtual Machine crashing and exiting abruptly to the launcher. I am unable to find any logs for this, and would appreciate your support for this matter.
OS: Windows 11
Clang: https://github.com/llvm/llvm-project/releases/tag/llvmorg-18.1.8 (LLVM-18.1.8-win64.exe)
Pharo Template: Pharo 14.0 - 64bit (development version, latest)
Pharo CIG Github: https://github.com/pharo-cig/pharo-cig
Raylib: https://github.com/raysan5/raylib
Steps to Reproduce
Step 1: Create Image
[cid:1a4a23bb-52e6-47a5-b0a7-b251d6ddc8ea]
Step 2: Installing Pharo CIG
Open Playground wtih 'Ctrl + O + P' (or 'Cmd + O + P').
Copy and paste the Installation Code from the Pharo CIG Githubhttps://github.com/pharo-cig/pharo-cig.
Click the "Do it All" green triangle button on the top left of the Playground Window.
[cid:2a667f99-b808-4950-a40a-798054e502e4]
Step 3: Installing Clang
Download and run the Pre-built binaries from this Github pagehttps://github.com/llvm/llvm-project/releases/tag/llvmorg-18.1.8 according to your platform.
The folder named LLVM should be in your "C:\Program Files" directory after installation for Windows 11.
Other installation methods may be used according to your preference.
Step 4: Installing raylib
Download or clone the raylib Github repositoryhttps://github.com/raysan5/raylib.
Extract the folder ('raylib-master') if you are downloading the repository.
Place the folder in a directory of your preference. E.g "C:\Users\morgan\raylib-master"
Step 5: Setting Pharo CIG Requirements
CIG needs to be able to find the clang library. If it cannot find it automatically, set the location in LibClang>>unix64LibraryName, e.g. - Pharo CIG Githubhttps://github.com/pharo-cig/pharo-cig
Open System Browser with 'Ctrl + O + B' (or 'Cmd + O + B').
Create a "win32LibraryName" method in the LibClang class under the CIG-LibClang package to set your "libclang.dll" location. This method is missing from the default installation.
Paste in this code (There may be whitespace character issues):
win32LibraryName
^ FFIWindowsLibraryFinder new
userPaths: #('C:\Program Files\LLVM\bin');
findAnyLibrary: #('libclang.dll')
[cid:3241b208-b515-4b7b-98fc-45312ec65c82]
Save and create the method with 'Ctrl + S' (or 'Cmd + S').
[cid:7d0e72f0-4086-411a-8e27-c2b11c4df817]
Step 6: The Example Recipe from Github
Open Playground wtih 'Ctrl + O + P' (or 'Cmd + O + P').
Copy and paste the example recipe from Github https://github.com/pharo-cig/pharo-cig?tab=readme-ov-file into the Playground.
Configure the example recipe from Githubhttps://github.com/pharo-cig/pharo-cig?tab=readme-ov-file.
Change "import:" and "cIncludedPath:" directories according to your file structure. E.g '/home/esteban/dev/vm/raylib/src/raylib.h' → 'C:\Users\morgan\raylib-master\src\raylib.h'
Click the "Do it All" green triangle button on the top left of the Playground Window. This should cause the Virtual Machine to abruptly exit or crash.
Code Snippet (There may be whitespace character issues):
(lib := CigCLibraryGenerator new)
"Prefix to be added to the generated classes (structures, enums, etc.)"
prefix: 'Ray';
"name of the generated package (by default, is the same as the libraryName, capitalized)"
packageName: 'Raylib';
"Library name. If not unixLibraryName, macLibraryName and winLibraryName
are specified, it will be taken as base name for the existing libraries
(e.g. in this case raylib.so, raylib.dylib and raylib.dll)"
libraryName: 'raylib';
"headers to import (there can be as many of them as is needed)."
import: 'C:\Users\morgan\raylib-master\src\raylib.h';
import: 'C:\Users\morgan\raylib-master\src\rcamera.h';
"include path (-I of c compiler), to allow libclang to find other
included headers."
cIncludePath: 'C:\Users\morgan\raylib-master\src';
"Since this is a graphical library, instruct the library to run in mainthread
(otherwise, default is 'same thread' which is the same thread the pharo is
running)"
useMainThread.
"generate the library"
lib generate.
[cid:55b4605c-3b19-45f0-8ed8-ef9093b6fa89]
End of email.
Hello,
pharo-cig has never been tested on windows, I no wonder is crashing :)
until now, generation always happened in linux-side (generatedlibraries
however have been tested on windows, time to time... when generation has
nothing to do with the platform :P).
I have to say that pharo-cig is not a "pharo team" project (in the sense
any member of the pharo team can take it). While we can have this
conversation here, I would very much prefer if we have it at
https://github.com/pharo-cig/pharo-cig :)
Esteban
On 11/29/25 03:09, MORGAN LEE GUAN HAN via Pharo-dev wrote:
Forwarding the original email.
From: MORGAN LEE GUAN HAN 1211107272@student.mmu.edu.my
Sent: Saturday, November 29, 2025 12:08 AM
To: Aik-Siong Koh askoh@askoh.com
Subject: Pharo CIG Crash Issue
Dear Pharo Team,
I am currently attempting to replicate what Esteban Lorenzano did for
this Youtube Video https://www.youtube.com/watch?v=U9fpvZJaFx4
/(//Esteban Lorenzano - Pharo-CIG: C++ Interface Generator - 23 April
2025//), /which is to//generate C Bindings for Pharo uFFI to
call,//in Windows 11/. /Unfortunately, I am unable to replicate the
results of the video. The results of my attempts leads to Pharo's
Virtual Machine crashing and exiting abruptly to the launcher. I am
unable to find any logs for this, and would appreciate your support
for this matter.
OS: Windows 11
Clang:
https://github.com/llvm/llvm-project/releases/tag/llvmorg-18.1.8
https://github.com/llvm/llvm-project/releases/tag/llvmorg-18.1.8 (LLVM-18.1.8-win64.exe)
Pharo Template: Pharo 14.0 - 64bit (development version, latest)
Pharo CIG Github: https://github.com/pharo-cig/pharo-cig
https://github.com/pharo-cig/pharo-cig
Raylib: https://github.com/raysan5/raylib
https://github.com/raysan5/raylib
Steps to Reproduce
Step 1: Create Image
**
Step 2: Installing Pharo CIG
Open Playground wtih 'Ctrl + O + P' (or 'Cmd + O + P').
Copy and paste the Installation Code from the Pharo CIG Github
https://github.com/pharo-cig/pharo-cig.
Click the "Do it All" green triangle button on the top left of the
Playground Window.
**
Step 3: Installing Clang
Download and run the Pre-built binaries from this Github page
https://github.com/llvm/llvm-project/releases/tag/llvmorg-18.1.8 according
to your platform.
The folder named LLVM should be in your "C:\Program Files" directory
after installation for Windows 11.
Other installation methods may be used according to your preference.
Step 4: Installing raylib
Download or clone the raylib Github repository
https://github.com/raysan5/raylib.
Extract the folder ('raylib-master') if you are downloading the
repository.
Place the folder in a directory of your preference. E.g
"C:\Users\morgan\raylib-master"
Step 5: Setting Pharo CIG Requirements
CIG needs to be able to find the clang library. If it cannot find it
automatically, set the location in LibClang>>unix64LibraryName, e.g. -
Pharo CIG Github https://github.com/pharo-cig/pharo-cig
Open System Browser with 'Ctrl + O + B' (or 'Cmd + O + B').
Create a "win32LibraryName" method in the LibClang class under the
CIG-LibClang package to set your "libclang.dll" location. This method
is missing from the default installation.
Paste in this code (/There may be whitespace character issues)/:
|win32LibraryName ^ FFIWindowsLibraryFinder new userPaths:
#('C:\Program Files\LLVM\bin'); findAnyLibrary: #('libclang.dll')|
Save and create the method with 'Ctrl + S' (or 'Cmd + S').
Step 6: The Example Recipe from Github
Open Playground wtih 'Ctrl + O + P' (or 'Cmd + O + P').
Copy and paste the example recipe from Github
https://github.com/pharo-cig/pharo-cig?tab=readme-ov-fileinto the
Playground.
Configure the example recipe from Github
https://github.com/pharo-cig/pharo-cig?tab=readme-ov-file.
Change "import:" and "cIncludedPath:" directories according to your
file structure. E.g '/home/esteban/dev/vm/raylib/src/raylib.h'
→ 'C:\Users\morgan\raylib-master\src\raylib.h'
Click the "Do it All" green triangle button on the top left of the
Playground Window. This should cause the Virtual Machine to abruptly
exit or crash.
Code Snippet (/There may be whitespace character issues):/
(lib := CigCLibraryGenerator new)
"Prefix to be added to the generated classes (structures, enums, etc.)"
prefix: 'Ray';
"name of the generated package (by default, is the same as the
libraryName, capitalized)"
packageName: 'Raylib';
"Library name. If not unixLibraryName, macLibraryName and winLibraryName
are specified, it will be taken as base name for the existing libraries
(e.g. in this case raylib.so, raylib.dylib and raylib.dll)"
libraryName: 'raylib';
"headers to import (there can be as many of them as is needed)."
import: 'C:\Users\morgan\raylib-master\src\raylib.h';
import: 'C:\Users\morgan\raylib-master\src\rcamera.h';
"include path (-I of c compiler), to allow libclang to find other
included headers."
cIncludePath: 'C:\Users\morgan\raylib-master\src';
"Since this is a graphical library, instruct the library to run in
mainthread
(otherwise, default is 'same thread' which is the same thread the
pharo is
running)"
useMainThread.
"generate the library"
lib generate.
End of email.
Esteban:
My student Morgan Lee has posted the issue at
https://github.com/pharo-cig/pharo-cig/issues/41
We are eager to interface Pharo to OpenCascade.
Thanks,
Aik-Siong Koh
On Sat, 29 Nov 2025 09:31:31 +0100, Esteban Lorenzano via Pharo-dev pharo-dev@lists.pharo.org wrote:
Hello,
pharo-cig has never been tested on windows, I no wonder is crashing :)
until now, generation always happened in linux-side (generatedlibraries however have been tested on windows, time to time... when generation has nothing to do with the platform :P).
I have to say that pharo-cig is not a "pharo team" project (in the sense any member of the pharo team can take it). While we can have this conversation here, I would very much prefer if we have it at https://github.com/pharo-cig/pharo-cig :)
Esteban
On 11/29/25 03:09, MORGAN LEE GUAN HAN via Pharo-dev wrote:
P {margin-top:0;margin-bottom:0;}
Forwarding the original email.
From: MORGAN LEE GUAN HAN 1211107272@student.mmu.edu.my
Sent: Saturday, November 29, 2025 12:08 AM
To: Aik-Siong Koh askoh@askoh.com
Subject: Pharo CIG Crash Issue
Dear Pharo Team,
I am currently attempting to replicate what Esteban Lorenzano did for this Youtube Video (Esteban Lorenzano - Pharo-CIG: C++ Interface Generator - 23 April 2025), which is to generate C Bindings for Pharo uFFI to call, in Windows 11. Unfortunately, I am unable to replicate the results of the video. The results of my attempts leads to Pharo's Virtual Machine crashing and exiting abruptly to the launcher. I am unable to find any logs for this, and would appreciate your support for this matter.
OS: Windows 11
Clang: https://github.com/llvm/llvm-project/releases/tag/llvmorg-18.1.8 (LLVM-18.1.8-win64.exe)
Pharo Template: Pharo 14.0 - 64bit (development version, latest)
Pharo CIG Github: https://github.com/pharo-cig/pharo-cig
Raylib: https://github.com/raysan5/raylib
Steps to Reproduce
Step 1: Create Image
Step 2: Installing Pharo CIG
Open Playground wtih 'Ctrl + O + P' (or 'Cmd + O + P').
Copy and paste the Installation Code from the Pharo CIG Github.
Click the "Do it All" green triangle button on the top left of the Playground Window.
Step 3: Installing Clang
Download and run the Pre-built binaries from this Github page according to your platform.
The folder named LLVM should be in your "C:\Program Files" directory after installation for Windows 11.
Other installation methods may be used according to your preference.
Step 4: Installing raylib
Download or clone the raylib Github repository.
Extract the folder ('raylib-master') if you are downloading the repository.
Place the folder in a directory of your preference. E.g "C:\Users\morgan\raylib-master"
Step 5: Setting Pharo CIG Requirements
CIG needs to be able to find the clang library. If it cannot find it automatically, set the location in LibClang>>unix64LibraryName, e.g. - Pharo CIG Github
Open System Browser with 'Ctrl + O + B' (or 'Cmd + O + B').
Create a "win32LibraryName" method in the LibClang class under the CIG-LibClang package to set your "libclang.dll" location. This method is missing from the default installation.
Paste in this code (There may be whitespace character issues):
win32LibraryName ^ FFIWindowsLibraryFinder new userPaths: #('C:\Program Files\LLVM\bin'); findAnyLibrary: #('libclang.dll')
Save and create the method with 'Ctrl + S' (or 'Cmd + S').
Step 6: The Example Recipe from Github
Open Playground wtih 'Ctrl + O + P' (or 'Cmd + O + P').
Copy and paste the example recipe from Github into the Playground.
Configure the example recipe from Github.
Change "import:" and "cIncludedPath:" directories according to your file structure. E.g '/home/esteban/dev/vm/raylib/src/raylib.h' → 'C:\Users\morgan\raylib-master\src\raylib.h'
Click the "Do it All" green triangle button on the top left of the Playground Window. This should cause the Virtual Machine to abruptly exit or crash.
Code Snippet (There may be whitespace character issues):
(lib := CigCLibraryGenerator new)
"Prefix to be added to the generated classes (structures, enums, etc.)"
prefix: 'Ray';
"name of the generated package (by default, is the same as the libraryName, capitalized)"
packageName: 'Raylib';
"Library name. If not unixLibraryName, macLibraryName and winLibraryName
are specified, it will be taken as base name for the existing libraries
(e.g. in this case raylib.so, raylib.dylib and raylib.dll)"
libraryName: 'raylib';
"headers to import (there can be as many of them as is needed)."
import: 'C:\Users\morgan\raylib-master\src\raylib.h';
import: 'C:\Users\morgan\raylib-master\src\rcamera.h';
"include path (-I of c compiler), to allow libclang to find other
included headers."
cIncludePath: 'C:\Users\morgan\raylib-master\src';
"Since this is a graphical library, instruct the library to run in mainthread
(otherwise, default is 'same thread' which is the same thread the pharo is
running)"
useMainThread.
"generate the library"
lib generate.
End of email.