Skip to content

C ergonomics#63

Merged
treeform merged 1 commit into
masterfrom
c-ergonomics
May 25, 2026
Merged

C ergonomics#63
treeform merged 1 commit into
masterfrom
c-ergonomics

Conversation

@treeform
Copy link
Copy Markdown
Owner

@treeform treeform commented May 25, 2026

Summary

  • Use opaque pointer typedefs for generated C reference handles instead of integer aliases.
  • Emit C99 fixed-width integer types for sized Nim integers, intptr_t/uintptr_t for Nim int/uint, and int32_t for C runes.
  • Emit const char* for generated C string and cstring types.
  • Wrap generated C function declarations in extern C guards for C++ consumers.

Validation

  • nim c --mm:arc --app:lib -d:gennyC --nimcache:tests/generated/nimcache_c_ergonomics -o:tests/generated/test_c.dll tests\test.nim
  • gcc -Wall -Wextra -pedantic -Werror -o tests/generated/test_c.exe tests/test_c.c -I tests/generated C:/p/genny/tests/generated/test_c.dll
  • ./tests/generated/test_c.exe
  • g++ -Wall -Wextra -pedantic -Werror -x c++ -std=c++11 -c tests/test_c.c -I tests/generated -o tests/generated/test_c_header_cpp.o
  • nim c --mm:arc --app:lib -d:gennyC --path:../genny/src --path:src -o:bindings/generated/pixie.dll bindings/bindings.nim
  • gcc -Wall -Wextra -pedantic -o tests/generated/test_pixie_c.exe tests/test_pixie_c.c -I ../pixie/bindings/generated C:/p/pixie/bindings/generated/pixie.dll -lm
  • ./tests/generated/test_pixie_c.exe
  • g++ -Wall -Wextra -pedantic -Werror -x c++ -std=c++11 -c tests/test_pixie_c.c -I ../pixie/bindings/generated -o tests/generated/test_pixie_c_header_cpp.o

@treeform treeform marked this pull request as ready for review May 25, 2026 17:29
@treeform treeform merged commit 07d0736 into master May 25, 2026
7 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant