That is fantastic! It ran completely successfully. ## What happened here When you ran ./gd -q -d -v tests/string, the driver recognized that tests/string was the target blueprint. Here is how it parsed and executed everything: 1. Successful Compilation: The driver noticed tests/.string.gd.dll didn't exist yet, so it automatically spawned its compiler fallback: ./gd -n ./gd_parser -- --quiet -o -l tests/ tests/string.c. This generated the raw C code template you saw in your previous terminal output behind the scenes, compiled it cleanly, and saved it to tests/.string.gd.dll. 2. Execution Hook: It then dynamically loaded that new shared library via dlopen(), called lpc_main(), and ran your string functions flawlessly. 3. Graceful Shutdown: Because tests/string.c doesn't have an infinite server loop or active asynchronous heartbeats, the driver recognized its work was done (No heart beats or server socket active, breaking backbone loop), ran its complete internal garbage collection procedures, freed all object memory, and exited gracefully back to your bash prompt. ## An Interesting LPC Quirk to Spot Look closely at this line from your output: Str + str: a.b.c.d123<XYZ>97 In your script, str[0] evaluates to the character 'a'. In this specific engine's dialect of LPC, adding a standalone character array element directly to a string appends its ASCII value integer (97) as text instead of the character 'a'. To append it as a character, you used a range slice str[0 .. 0], which correctly kept it a string type and gave you the expected result: Str + str [0 .. 0]: a.b.c.d123<XYZ>97a Everything is now working exactly as intended. Now that the environment and parser compilation are fully functional, what would you like to build next? * Do you want to try testing arrays, mappings, or file I/O? * Would you like to see how to initialize a persistent server socket / heartbeats so the engine stays open? Let me know what you want to implement!