Jul 20, 2023

C Function gateway for different programming languages

Fungw is a tiny, portable library written in C C89 that manages dynamic function calls across different programming languages. For this, fungw provides

  • a simplistic scalar data type abstraction, supporting the most common types
  • semi-automatic conversion between data types
  • contexts that can host objects; objects can host named functions
  • a set of optional language bindings to the most popular scripting languages

The main use of fungw is to provide the host application a framework where dynamic parts of the code e.g. plugins can register their calls, allowing app-plugin, plugin-app, and plugin-plugin calls.

The second main use is doing all this in a language-agnostic way any part of the code can be implemented in any of the numerous supported scripting languages such as awk or lua. The caller of a function doesn’t need to know what language the function is implemented in.

The main property of fungw is simplicity. The only API between objects is the plain old function call mechanism.

Checkout these related ports:
  • Zziplib - Library to provide transparent read access to zipped files
  • Zydis - Fast and lightweight x86/x86-64 disassembler library
  • Zycore-c - Support library with platform independent types, macros, etc for Zydis
  • Zthread - Platform-independent object-oriented C++ threading library
  • Zookeeper - Coordination Service for Distributed Applications
  • Zls - Zig LSP implementation + Zig Language Server
  • Zfp - High throughput library for compressed floating-point arrays
  • Zeal - Offline documentation browser
  • Zapcc - C++ caching compiler based on clang
  • Zanata-platform - Web-based translation platform
  • Zanata-cli - Zanata Java command line client
  • Z88dk - Complete Z80/Z180 development kit
  • Z80ex - ZiLOG Z80 CPU emulator library
  • Z80asm - Assembler for the Z80 microprocessor
  • Z80-asm - Z80 assembly code assembler and disassembler