diff --git a/docs/devlog.md b/docs/devlog.md new file mode 100644 index 0000000..ef8ada0 --- /dev/null +++ b/docs/devlog.md @@ -0,0 +1,42 @@ +FFI +=== + +*** Warning: Turns out this is a really bad idea, do not use! When the BEAM calls native functions it needs to know how many reductions should be used. Otherwise calling a long running function can break the scheduling completly, because with this approach a long running function is considered 1 reduction *** + +An easy way to call external functions (e.g. C functions) from [Elixir](https://github.com/elixir-lang/elixir). + +Inspired by [Ruby's FFI](https://github.com/ffi/ffi) + +** This is alpha software ** + +## Example Program + +```elixir +defmodule MyLib do + use FFI.Library, name: "libstdc++.so.6" + + attach_function :puts, [:string], :int +end + +MyLib.puts("Hello World from C stdlib") +``` + +## Installation + +The package can be installed by adding `ffi` to your list of dependencies in `mix.exs`: + +```elixir +def deps do + [{:ffi, git: "https://github.com/joshnuss/elixir-ffi.git"}] +end +``` + +## Running Examples + +```shell +mix run examples/basic.exs +``` + +## License + +MIT \ No newline at end of file