ctypes.sh alternatives and similar libraries
Based on the "Scripting" category.
Alternatively, view ctypes.sh alternatives based on common mentions on social networks and blogs.
-
ChakraCore
ChakraCore is an open source Javascript engine with a C API. [Moved to: https://github.com/chakra-core/ChakraCore] -
SWIG
SWIG is a software development tool that connects programs written in C and C++ with a variety of high-level programming languages. -
Wren
The Wren Programming Language. Wren is a small, fast, class-based concurrent scripting language. -
Duktape
Duktape - embeddable Javascript engine with a focus on portability and compact footprint -
sol2
Sol3 (sol2 v3.0) - a C++ <-> Lua API wrapper with advanced features and top notch performance - is here, and it's great! Documentation: -
djinni
A tool for generating cross-language type declarations and interface bindings. [Apache2] -
CppSharp
Tools and libraries to glue C/C++ APIs to high-level languages -
Lua
Lua is a powerful, efficient, lightweight, embeddable scripting language. It supports procedural programming, object-oriented programming, functional programming, data-driven programming, and data description. -
nbind
:sparkles: Magical headers that make your C++ library accessible from JavaScript :rocket: -
shpp
Call c++ functions from a shell with any arguments of any types parsed automatically -
Boost.Python
A C++ library which enables seamless interoperability between C++ and the Python programming language. [Boost]
Updating dependencies is time-consuming.
* Code Quality Rankings and insights are calculated and provided by Lumnify.
They vary from L1 to L5 with "L5" being the highest.
Do you think we are missing an alternative of ctypes.sh or a related project?
README
ctypes.sh
This is ctypes.sh
, a foreign function interface for bash.
ctypes.sh
is a bash plugin that provides a foreign function interface directly
in your shell. In other words, it allows you to call routines in shared
libraries from within bash.
A (very) simple example will help illustrate:
$ dlcall puts "hello, world"
hello, world
# A more complex example, use libm to calculate sin(PI/2)
$ dlopen libm.so.6
0x172ebf0
$ dlcall -r double sin double:1.57079632679489661923
double:1.000000
ctypes.sh
can extend bash scripts to accomplish tasks that were previously
impossible, or would require external helpers to be written.
ctypes.sh
makes it possible to use
GTK+ natively in
your shell scripts, or write a high-performance http daemon.
See more examples here
prerequisites
ctypes.sh
is dependent on the following libraries and programs:
- libffi
- bash
- libelf (optional)
- elfutils (optional)
- libdwarf / libdw (optional)
Fedora
For recent Fedora, this should be enough:
sudo yum install elfutils-devel dnf-utils
Now you can use the debuginfo-install
command to install debugging symbols for automatic structure support.
Ubuntu
For recent Ubuntu, this should be enough:
sudo apt install autoconf libltdl-dev libffi-dev libelf-dev elfutils libdw-dev
If you want to use automatic struct support (recommended), you should also make you have ddebs available.
install
ctypes.sh
can be installed from source like this:
$ git clone https://github.com/taviso/ctypes.sh.git
$ cd ctypes.sh
$ ./autogen.sh
$ ./configure
$ make
$ [sudo] make install
By default ctypes.sh
is installed into /usr/local/bin
and
/usr/local/lib
. You can overload the prefix path by defining the
PREFIX
environment variable before installing.
$ PREFIX=$HOME make install
example
source ctypes.sh
puts () {
dlcall puts "$@"
return $?
}
puts "hello, world"
Here is what people have been saying about ctypes.sh:
- "that's disgusting"
- "this has got to stop"
- "you've gone too far with this"
- "is this a joke?"
- "I never knew the c could stand for Cthulhu."
You can read more about ctypes.sh and see it in action on the Wiki