Giter VIP home page Giter VIP logo

snappy-erlang-nif's Introduction

snappy-erlang-nif

This is an Erlang NIF for Google's snappy fast compressor and decompressor.

Google snappy's official repository and bug tracking system is at:

Its source is included in this project.

changelog

  • tag 1.1.2 as tests pass against OTP-24
  • tag otp-24 compatibility
  • switch build chain to rebar3 and enc requiring OTP20 or newer
  • tag snappy-1.1.8, also first version compatible with OTP23 (thanks @skaes)
  • tag snappy-1.1.3
  • add a changelog

site

https://github.com/skunkwerks/snappy-erlang-nif

credits

Software is built by a few people and maintained by many. Thank-you for all your patches!

performance tests

Snappy is much faster than zlib's deflate compression, specially for reasonably large amounts of data. Here follow a few basic tests.

Erlang R14B02 (erts-5.8.3) [source] [smp:2:2] [rq:2] [async-threads:0] [hipe] [kernel-poll:false]

Eshell V5.8.3  (abort with ^G)
1> code:add_path("ebin").
true
2> {ok, J} = file:read_file("../seatoncouch/doc_11k.json").
{ok,<<"{\n\"data3\":\"ColreUHAtn8iYvHIHw2ohiAuaXNGNX9WhlwANGDBYKYs6YEvHXgFXRkWuYoFyfLVqtjZNPedtukWRDXFz7VUOl4APLS7GB9Nw"...>>}
3>
3> timer:tc(snappy, compress, [J]).
{4365,
 {ok,<<"úZðÔ{\n\"data3\":\"ColreUHAtn8iYvHIHw2ohiAuaXNGNX9WhlwANGDBYKYs6YEvHXgFXRkWuYoFyfLVqtjZNPedtukWRDXFz7VUO"...>>}}
4> timer:tc(snappy, compress, [J]).
{115,
 {ok,<<"úZðÔ{\n\"data3\":\"ColreUHAtn8iYvHIHw2ohiAuaXNGNX9WhlwANGDBYKYs6YEvHXgFXRkWuYoFyfLVqtjZNPedtukWRDXFz7VUO"...>>}}
5> timer:tc(snappy, compress, [J]).
{113,
 {ok,<<"úZðÔ{\n\"data3\":\"ColreUHAtn8iYvHIHw2ohiAuaXNGNX9WhlwANGDBYKYs6YEvHXgFXRkWuYoFyfLVqtjZNPedtukWRDXFz7VUO"...>>}}
6> timer:tc(snappy, compress, [J]).
{112,
 {ok,<<"úZðÔ{\n\"data3\":\"ColreUHAtn8iYvHIHw2ohiAuaXNGNX9WhlwANGDBYKYs6YEvHXgFXRkWuYoFyfLVqtjZNPedtukWRDXFz7VUO"...>>}}
7> timer:tc(snappy, compress, [J]).
{113,
 {ok,<<"úZðÔ{\n\"data3\":\"ColreUHAtn8iYvHIHw2ohiAuaXNGNX9WhlwANGDBYKYs6YEvHXgFXRkWuYoFyfLVqtjZNPedtukWRDXFz7VUO"...>>}}
8> timer:tc(snappy, compress, [J]).
{111,
 {ok,<<"úZðÔ{\n\"data3\":\"ColreUHAtn8iYvHIHw2ohiAuaXNGNX9WhlwANGDBYKYs6YEvHXgFXRkWuYoFyfLVqtjZNPedtukWRDXFz7VUO"...>>}}
9>
9> timer:tc(zlib, zip, [J]).
{1025,
 <<237,88,217,142,226,88,18,125,175,175,104,241,108,89,
   119,95,234,13,39,24,179,153,37,49,182,25,181,...>>}
10> timer:tc(zlib, zip, [J]).
{753,
 <<237,88,217,142,226,88,18,125,175,175,104,241,108,89,
   119,95,234,13,39,24,179,153,37,49,182,25,181,...>>}
11> timer:tc(zlib, zip, [J]).
{974,
 <<237,88,217,142,226,88,18,125,175,175,104,241,108,89,
   119,95,234,13,39,24,179,153,37,49,182,25,181,...>>}
12> timer:tc(zlib, zip, [J]).
{753,
 <<237,88,217,142,226,88,18,125,175,175,104,241,108,89,
   119,95,234,13,39,24,179,153,37,49,182,25,181,...>>}
13> timer:tc(zlib, zip, [J]).
{960,
 <<237,88,217,142,226,88,18,125,175,175,104,241,108,89,
   119,95,234,13,39,24,179,153,37,49,182,25,181,...>>}
14> timer:tc(zlib, zip, [J]).
{769,
 <<237,88,217,142,226,88,18,125,175,175,104,241,108,89,
   119,95,234,13,39,24,179,153,37,49,182,25,181,...>>}
15>
15> byte_size(element(2, snappy:compress(J))).
2846
16> byte_size(zlib:zip(J)).
1858
17>
17> crypto:start().
ok
18> Large = base64:encode(crypto:rand_bytes(100 * 1024)).
<<"72GMvPLuWJLJeYSlNm9oNkYkbjTeSBDgTrqamQ/zgj7hcUge1co6LvldJyitKPZkMPQGnrN98EyqSyWto3k7ShNgiNc05Gt4zdXSbTVSDzeID661DnJX"...>>
19>
19> timer:tc(snappy, compress, [Large]).
{365,
 {ok,<<216,170,8,244,255,127,55,50,71,77,118,80,76,117,
       87,74,76,74,101,89,83,108,78,109,57,...>>}}
20> timer:tc(snappy, compress, [Large]).
{541,
 {ok,<<216,170,8,244,255,127,55,50,71,77,118,80,76,117,
       87,74,76,74,101,89,83,108,78,109,57,...>>}}
21> timer:tc(snappy, compress, [Large]).
{455,
 {ok,<<216,170,8,244,255,127,55,50,71,77,118,80,76,117,
       87,74,76,74,101,89,83,108,78,109,57,...>>}}
22> timer:tc(snappy, compress, [Large]).
{479,
 {ok,<<216,170,8,244,255,127,55,50,71,77,118,80,76,117,
       87,74,76,74,101,89,83,108,78,109,57,...>>}}
23>
23> timer:tc(zlib, zip, [Large]).
{14666,
 <<20,155,181,118,195,64,20,5,63,72,133,152,74,49,147,197,
   234,196,204,236,175,143,115,210,164,112,188,...>>}
24> timer:tc(zlib, zip, [Large]).
{19716,
 <<20,155,181,118,195,64,20,5,63,72,133,152,74,49,147,197,
   234,196,204,236,175,143,115,210,164,112,188,...>>}
25> timer:tc(zlib, zip, [Large]).
{14561,
 <<20,155,181,118,195,64,20,5,63,72,133,152,74,49,147,197,
   234,196,204,236,175,143,115,210,164,112,188,...>>}
26> timer:tc(zlib, zip, [Large]).
{21683,
 <<20,155,181,118,195,64,20,5,63,72,133,152,74,49,147,197,
   234,196,204,236,175,143,115,210,164,112,188,...>>}
27> timer:tc(zlib, zip, [Large]).
{11575,
 <<20,155,181,118,195,64,20,5,63,72,133,152,74,49,147,197,
   234,196,204,236,175,143,115,210,164,112,188,...>>}
28>
28> byte_size(element(2, snappy:compress(Large))).
136554
29> byte_size(zlib:zip(Large)).
103440
30>

snappy-erlang-nif's People

Contributors

arcusfelis avatar benoitc avatar bryanpkc avatar dch avatar fdmanana avatar fenek avatar glejeune avatar joshuawscott avatar kellymclaughlin avatar lpgauth avatar pmembrey avatar skaes avatar typedlambda avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

snappy-erlang-nif's Issues

Returns ok when compressing an empty binary, but fails on decompression

Hi guys,

I came across a situation where a user was sending an empty message. snappy:compress() would accept it and return {ok,<<>>}. However if you try to decompress <<>> you get the error message {error,data_not_compressed}.

This error message is misleading, because it's not clear whether the data is okay but was stored uncompressed (for whatever reason) or whether the data itself is invalid. According to the C++ version, the data is considered as invalid.

I'm not sure what the best way to handle this situation is. Either it should return an error on compression (say {error,cant_compress_empty_bytes}) or on decompression it should just return {ok,<<>>}. I guess the first would probably be a better option?

I would also suggest we change {error,data_not_compressed} to {error,not_valid_snappy_compressed_data} or similar.

Happy to put some code together if you can let me know which direction you want to take...

Cheers,

Pete

Unable to compile on Mac OS X 10.11.6

$ rebar compile
==> snappy-erlang-nif (compile)
cc /Users/dplummer/src/elixir/snappy-erlang-nif/c_src/snappy/snappy-sinksource.o /Users/dplummer/src/elixir/snappy-erlang-nif/c_src/snappy/snappy-stubs-internal.o /Users/dplummer/src/elixir/snappy-erlang-nif/c_src/snappy/snappy.o /Users/dplummer/src/elixir/snappy-erlang-nif/c_src/snappy_nif.o -L/usr/local/lib -shared -lstdc++ -L /usr/local/Cellar/erlang/19.0.2/lib/erlang/lib/erl_interface-3.9/lib -lerl_interface -lei -o /Users/dplummer/src/elixir/snappy-erlang-nif/c_src/../priv/snappy_nif.so
Undefined symbols for architecture x86_64:
  "_enif_alloc_binary", referenced from:
      SnappyNifSink::SnappyNifSink(enif_environment_t*) in snappy_nif.o
      SnappyNifSink::SnappyNifSink(enif_environment_t*) in snappy_nif.o
      _snappy_compress_erl in snappy_nif.o
      _snappy_decompress_erl in snappy_nif.o
  "_enif_inspect_iolist_as_binary", referenced from:
      _snappy_compress_erl in snappy_nif.o
      _snappy_decompress_erl in snappy_nif.o
      _snappy_uncompressed_length_erl in snappy_nif.o
      _snappy_is_valid in snappy_nif.o
  "_enif_make_atom", referenced from:
      _snappy_compress_erl in snappy_nif.o
      _snappy_decompress_erl in snappy_nif.o
      _snappy_uncompressed_length_erl in snappy_nif.o
      _snappy_is_valid in snappy_nif.o
  "_enif_make_badarg", referenced from:
      _snappy_compress_erl in snappy_nif.o
      _snappy_decompress_erl in snappy_nif.o
      _snappy_uncompressed_length_erl in snappy_nif.o
      _snappy_is_valid in snappy_nif.o
  "_enif_make_binary", referenced from:
      _snappy_compress_erl in snappy_nif.o
      _snappy_decompress_erl in snappy_nif.o
  "_enif_make_existing_atom", referenced from:
      _snappy_compress_erl in snappy_nif.o
      _snappy_decompress_erl in snappy_nif.o
      _snappy_uncompressed_length_erl in snappy_nif.o
      _snappy_is_valid in snappy_nif.o
  "_enif_make_tuple", referenced from:
      _snappy_compress_erl in snappy_nif.o
      _snappy_decompress_erl in snappy_nif.o
      _snappy_uncompressed_length_erl in snappy_nif.o
      _snappy_is_valid in snappy_nif.o
  "_enif_make_ulong", referenced from:
      _snappy_uncompressed_length_erl in snappy_nif.o
  "_enif_realloc_binary", referenced from:
      SnappyNifSink::GetAppendBuffer(unsigned long, char*) in snappy_nif.o
      SnappyNifSink::getBin() in snappy_nif.o
      _snappy_compress_erl in snappy_nif.o
  "_enif_release_binary", referenced from:
      SnappyNifSink::~SnappyNifSink() in snappy_nif.o
      SnappyNifSink::~SnappyNifSink() in snappy_nif.o
      SnappyNifSink::~SnappyNifSink() in snappy_nif.o
      _snappy_compress_erl in snappy_nif.o
ld: symbol(s) not found for architecture x86_64
clang: error: linker command failed with exit code 1 (use -v to see invocation)
make: *** [/Users/dplummer/src/elixir/snappy-erlang-nif/c_src/../priv/snappy_nif.so] Error 1
ERROR: Command [compile] failed!

erl -v:

Erlang/OTP 19 [erts-8.0.2] [source] [64-bit] [smp:8:8] [async-threads:10] [hipe] [kernel-poll:false] [dtrace]

gcc -v:

Configured with: --prefix=/Applications/Xcode.app/Contents/Developer/usr --with-gxx-include-dir=/usr/include/c++/4.2.1
Apple LLVM version 7.3.0 (clang-703.0.31)
Target: x86_64-apple-darwin15.6.0
Thread model: posix
InstalledDir: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin

Ideas? I'm pretty new to erlang, and know basically nothing of nifs. Just trying to use this library with kafka_ex

Does Snappy work with erlang-19

I am using CQerl for my elixir(phoenix) application. Snappy is a dependency for CQerl. When I updated erlang to 19, things stopped working. Following is the error I am getting:

==> snappy (compile)
ERROR: OTP release 19 does not match required regex R13B04|R14|R15|R16|17|18
ERROR: compile failed while processing /Users/xxxx/projects/server/deps/snappy: rebar_abort
** (Mix) Could not compile dependency :snappy, "/Users/xxxx/.mix/rebar compile skip_deps=true deps_dir="/Users/xxxx/project
s/server/_build/dev/lib"" command failed. You can recompile this dependency with "mix deps.compile snappy", u
pdate it with "mix deps.update snappy" or clean it with "mix deps.clean snappy"

Unable to compile on Mac OS X 10.12.3

I got error while compiling snappy on Mac OS X 10.12.3, here is what I got from ./rebar compile -vvv

DEBUG: Rebar location: "/Users/thang2410199/Desktop/Backend/chat-dev/_build/default/lib/snappy/rebar"
DEBUG: Evaluating config script "/Users/thang2410199/Desktop/Backend/chat-dev/_build/default/lib/snappy/rebar.config.script"
DEBUG: Consult config file "/Users/thang2410199/Desktop/Backend/chat-dev/_build/default/lib/snappy/rebar.config"
DEBUG: Available deps: []
DEBUG: Missing deps : []
DEBUG: Predirs: []
==> snappy (compile)
INFO: sh info:
cwd: "/Users/thang2410199/Desktop/Backend/chat-dev/_build/default/lib/snappy"
cmd: make -C c_src
DEBUG: opts: [{env,[{"REBAR_DEPS_DIR",
"/Users/thang2410199/Desktop/Backend/chat-dev/_build/default/lib/snappy/deps"},
{"ERL_LIBS",
"/Users/thang2410199/Desktop/Backend/chat-dev/_build/default/lib/snappy/deps"},
{"Apple_PubSub_Socket_Render",
"/private/tmp/com.apple.launchd.6n9R8xEMuR/Render"},
{"BINDIR",
"/Users/thang2410199/.erlangInstaller/19.3/erts-8.3/bin"},
{"CC","cc"},
{"COLORFGBG","7;0"},
{"COMMAND_MODE","unix2003"},
{"CXX","c++"},
{"DRV_CC_TEMPLATE",
"cc -c $CFLAGS -g -Wall -fPIC -I/Users/thang2410199/.erlangInstaller/19.3/lib/erl_interface-3.9.3/include -I/Users/thang2410199/.erlangInstaller/19.3/erts-8.3/include $PORT_IN_FILES -o $PORT_OUT_FILE"},
{"DRV_CFLAGS",
"-g -Wall -fPIC -I/Users/thang2410199/.erlangInstaller/19.3/lib/erl_interface-3.9.3/include -I/Users/thang2410199/.erlangInstaller/19.3/erts-8.3/include "},
{"DRV_CXX_TEMPLATE",
"c++ -c $CXXFLAGS -g -Wall -fPIC -I/Users/thang2410199/.erlangInstaller/19.3/lib/erl_interface-3.9.3/include -I/Users/thang2410199/.erlangInstaller/19.3/erts-8.3/include $PORT_IN_FILES -o $PORT_OUT_FILE"},
{"DRV_LDFLAGS",
"-bundle -flat_namespace -undefined suppress -L/Users/thang2410199/.erlangInstaller/19.3/lib/erl_interface-3.9.3/lib -lerl_interface -lei"},
{"DRV_LINK_TEMPLATE",
"cc $PORT_IN_FILES $LDFLAGS -bundle -flat_namespace -undefined suppress -L/Users/thang2410199/.erlangInstaller/19.3/lib/erl_interface-3.9.3/lib -lerl_interface -lei -o $PORT_OUT_FILE"},
{"EMU","beam"},
{"ERLANG_ARCH","64"},
{"ERLANG_TARGET","19-x86_64-apple-darwin15.6.0-64"},
{"ERL_CFLAGS",
" -I/Users/thang2410199/.erlangInstaller/19.3/lib/erl_interface-3.9.3/include -I/Users/thang2410199/.erlangInstaller/19.3/erts-8.3/include "},
{"ERL_EI_LIBDIR",
"/Users/thang2410199/.erlangInstaller/19.3/lib/erl_interface-3.9.3/lib"},
{"ERL_LDFLAGS",
" -L/Users/thang2410199/.erlangInstaller/19.3/lib/erl_interface-3.9.3/lib -lerl_interface -lei"},
{"EXE_CC_TEMPLATE",
"cc -c $CFLAGS -g -Wall -fPIC -I/Users/thang2410199/.erlangInstaller/19.3/lib/erl_interface-3.9.3/include -I/Users/thang2410199/.erlangInstaller/19.3/erts-8.3/include $PORT_IN_FILES -o $PORT_OUT_FILE"},
{"EXE_CFLAGS",
"-g -Wall -fPIC -I/Users/thang2410199/.erlangInstaller/19.3/lib/erl_interface-3.9.3/include -I/Users/thang2410199/.erlangInstaller/19.3/erts-8.3/include "},
{"EXE_CXX_TEMPLATE",
"c++ -c $CXXFLAGS -g -Wall -fPIC -I/Users/thang2410199/.erlangInstaller/19.3/lib/erl_interface-3.9.3/include -I/Users/thang2410199/.erlangInstaller/19.3/erts-8.3/include $PORT_IN_FILES -o $PORT_OUT_FILE"},
{"EXE_LDFLAGS",
" -L/Users/thang2410199/.erlangInstaller/19.3/lib/erl_interface-3.9.3/lib -lerl_interface -lei"},
{"EXE_LINK_TEMPLATE",
"cc $PORT_IN_FILES $LDFLAGS -L/Users/thang2410199/.erlangInstaller/19.3/lib/erl_interface-3.9.3/lib -lerl_interface -lei -o $PORT_OUT_FILE"},
{"GEM_HOME","/Users/thang2410199/.rvm/gems/ruby-2.4.0"},
{"GEM_PATH",
"/Users/thang2410199/.rvm/gems/ruby-2.4.0:/Users/thang2410199/.rvm/gems/ruby-2.4.0@global"},
{"HOME","/Users/thang2410199"},
{"IRBRC",
"/Users/thang2410199/.rvm/rubies/ruby-2.4.0/.irbrc"},
{"ITERM_PROFILE","Default"},
{"ITERM_SESSION_ID",
"w0t0p0:DC8E167D-1506-4A5A-9150-C44833197825"},
{"LANG","en_US.UTF-8"},
{"LC_CTYPE","en_US.UTF-8"},
{"LESS","-R"},
{"LOGNAME","thang2410199"},
{"LSCOLORS","Gxfxcxdxbxegedabagacad"},
{"MY_RUBY_HOME",
"/Users/thang2410199/.rvm/rubies/ruby-2.4.0"},
{"PAGER","less"},
{"PATH",
"/Users/thang2410199/.erlangInstaller/19.3/erts-8.3/bin:/Users/thang2410199/.erlangInstaller/19.3/bin:/Users/thang2410199/.rvm/gems/ruby-2.4.0/bin:/Users/thang2410199/.rvm/gems/ruby-2.4.0@global/bin:/Users/thang2410199/.rvm/rubies/ruby-2.4.0/bin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/Users/thang2410199/.rvm/bin:/Users/thang2410199/.erlangInstaller/19.3/bin"},
{"PROGNAME","erl"},
{"PWD",
"/Users/thang2410199/Desktop/Backend/chat-dev/_build/default/lib/snappy"},
{"ROOTDIR","/Users/thang2410199/.erlangInstaller/19.3"},
{"RUBY_VERSION","ruby-2.4.0"},
{"SECURITYSESSIONID","186a7"},
{"SHELL","/bin/zsh"},
{"SHLVL","1"},
{"SSH_AUTH_SOCK",
"/private/tmp/com.apple.launchd.mLPUT9giCk/Listeners"},
{"TERM","xterm-256color"},
{"TERM_PROGRAM","iTerm.app"},
{"TERM_PROGRAM_VERSION","3.0.15"},
{"TERM_SESSION_ID",
"w0t0p0:DC8E167D-1506-4A5A-9150-C44833197825"},
{"TMPDIR",
"/var/folders/wv/353fmbnj0fqb8kzwm_44mr0r0000gn/T/"},
{"USER","thang2410199"},
{"XPC_FLAGS","0x0"},
{"XPC_SERVICE_NAME","0"},
{"ZSH","/Users/thang2410199/.oh-my-zsh"},
{"__CF_USER_TEXT_ENCODING","0x1F5:0x0:0x0"},
{"_system_arch","x86_64"},
{"_system_name","OSX"},
{"_system_type","Darwin"},
{"_system_version","10.12"},
{"rvm_alias_expanded",[]},
{"rvm_bin_flag",[]},
{"rvm_bin_path","/Users/thang2410199/.rvm/bin"},
{"rvm_docs_type",[]},
{"rvm_gemstone_package_file",[]},
{"rvm_gemstone_url",[]},
{"rvm_hook",[]},
{"rvm_niceness",[]},
{"rvm_nightly_flag",[]},
{"rvm_only_path_flag",[]},
{"rvm_path","/Users/thang2410199/.rvm"},
{"rvm_prefix","/Users/thang2410199"},
{"rvm_proxy",[]},
{"rvm_quiet_flag",[]},
{"rvm_ruby_bits",[]},
{"rvm_ruby_file",[]},
{"rvm_ruby_make",[]},
{"rvm_ruby_make_install",[]},
{"rvm_ruby_mode",[]},
{"rvm_script_name",[]},
{"rvm_sdk",[]},
{"rvm_silent_flag",[]},
{"rvm_use_flag",[]},
{"rvm_version","1.29.0 (latest)"},
{"rvm_wrapper_name",[]}]},
{abort_on_error,"Command [compile] failed!\n"}]
c++ -O3 -arch x86_64 -finline-functions -Wall -fPIC -I =PROGRESS REPORT==== 6-Jun-2017::13:41:58 === supervisor: {local,sasl_safe_sup} started: [{pid,<0.56.0>}, {id,alarm_handler}, {mfargs,{alarm_handler,start_link,[]}}, {restart_type,permanent}, {shutdown,2000}, {child_type,worker}] =PROGRESS REPORT==== 6-Jun-2017::13:41:58 === supervisor: {local,sasl_sup} started: [{pid,<0.55.0>}, {id,sasl_safe_sup}, {mfargs, {supervisor,start_link, [{local,sasl_safe_sup},sasl,safe]}}, {restart_type,permanent}, {shutdown,infinity}, {child_type,supervisor}] =PROGRESS REPORT==== 6-Jun-2017::13:41:58 === supervisor: {local,sasl_sup} started: [{pid,<0.57.0>}, {id,release_handler}, {mfargs,{release_handler,start_link,[]}}, {restart_type,permanent}, {shutdown,2000}, {child_type,worker}] =PROGRESS REPORT==== 6-Jun-2017::13:41:58 === application: sasl started_at: nonode@nohost /Users/thang2410199/.erlangInstaller/19.3/erts-8.3/include/ -I =PROGRESS REPORT==== 6-Jun-2017::13:41:59 === supervisor: {local,sasl_safe_sup} started: [{pid,<0.56.0>}, {id,alarm_handler}, {mfargs,{alarm_handler,start_link,[]}}, {restart_type,permanent}, {shutdown,2000}, {child_type,worker}] =PROGRESS REPORT==== 6-Jun-2017::13:41:59 === supervisor: {local,sasl_sup} started: [{pid,<0.55.0>}, {id,sasl_safe_sup}, {mfargs, {supervisor,start_link, [{local,sasl_safe_sup},sasl,safe]}}, {restart_type,permanent}, {shutdown,infinity}, {child_type,supervisor}] =PROGRESS REPORT==== 6-Jun-2017::13:41:59 === supervisor: {local,sasl_sup} started: [{pid,<0.57.0>}, {id,release_handler}, {mfargs,{release_handler,start_link,[]}}, {restart_type,permanent}, {shutdown,2000}, {child_type,worker}] =PROGRESS REPORT==== 6-Jun-2017::13:41:59 === application: sasl started_at: nonode@nohost /Users/thang2410199/.erlangInstaller/19.3/lib/erl_interface-3.9.3/include -c -o /Users/thang2410199/Desktop/Backend/chat-dev/_build/default/lib/snappy/c_src/snappy/snappy-sinksource.o /Users/thang2410199/Desktop/Backend/chat-dev/_build/default/lib/snappy/c_src/snappy/snappy-sinksource.cc
/bin/sh: 0.56.0: No such file or directory
make: *** [/Users/thang2410199/Desktop/Backend/chat-dev/_build/default/lib/snappy/c_src/snappy/snappy-sinksource.o] Error 1
ERROR: Command [compile] failed!

tag a version

It looks like there are no tagged versions here, do you mind to tag at least a version for the most recent master revision?

Hex package

Would you be willing to publish this on Hex? I'd be happy to help.

c_src/snappy_nif.cc:161: bad catch type ?

c_src/snappy_nif.cc:161:28: warning: catching polymorphic type 'class std::bad_alloc' by value [-Wcatch-value=]

Source code is

} catch(std::bad_alloc e) {

Maybe better code

} catch(const std::bad_alloc & e) {

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.