Comprehensive RPC framework with support for C++, C#, Java, JavaScript, Python and more.

Overview

Join the chat at https://gitter.im/zeroc-ice/ice

Ice - Comprehensive RPC Framework

Ice helps you network your software with minimal effort. By taking care of all interactions with low-level network programming interfaces, Ice allows you to focus your efforts on your application logic. When using Ice, there is no need to worry about details such as opening network connections, serializing and deserializing data for network transmission, or retrying failed connection attempts (to name just a few of dozens of such low-level details).

You can download Ice releases from ZeroC's website. Use this GitHub repository to build from source; see branches for more information.

Languages

Ice supports the following programming languages:

  • C#
  • C++
  • Java
  • JavaScript
  • MATLAB
  • Objective-C
  • PHP
  • Python
  • Ruby
  • Swift
  • TypeScript

Platforms

Ice runs on a wide range of platforms:

  • Android
  • iOS
  • Linux
  • Linux on embedded devices
  • macOS
  • Node.js
  • Unix systems such as AIX
  • Web Browser
  • Windows

Features

  • Efficient, high-performance binary protocol
  • Supports a wide range of programming languages and platforms
  • Easy to use and type-safe API, with your own interfaces and types defined in a programming language neutral IDL, Slice
  • Supports secure, encrypted communications by taking advantage of your platform's native SSL/TLS stack
  • Familiar object-oriented programming model, with the ability to transmit proxies (references to remote objects) to remote applications
  • Supports synchronous and asynchronous calls, for both client-side invocations and server-side dispatches
  • Automatic discovery of remote objects through UDP multicast
  • Comes with a number of optional services:
    • IceGrid - a DNS-like service for Ice objects, with support for server deployment, replication, monitoring, load-balancing and more
    • IceStorm - a lightweight topic-based pub-sub service
    • Glacier2 - a sysadmin-friendly solution for routing Ice communications through firewalls

Branches

  • master Primary development branch (unstable, frequently updated)

  • 3.7 Ice 3.7.x plus various patches (stable, frequently updated)

  • 3.6 Ice 3.6.x plus various patches (stable)

  • 3.5 Ice 3.5.1 plus various patches (stable)

  • 3.4 Ice 3.4.2 plus various patches (stable)

Copyright and License

Ice is a single-copyright project: all the source code in this ice repository is Copyright © ZeroC, Inc., with very few exceptions.

As copyright owner, ZeroC can license Ice under different license terms, and offers the following licenses for Ice:

  • GPL v2, a popular open-source license with strong copyleft conditions (the default license)
  • Commercial or closed-source licenses

If you license Ice under GPL v2, there is no license fee or signed license agreement: you just need to comply with the GPL v2 terms and conditions. See ICE_LICENSE and LICENSE for further information.

If you purchase a commercial or closed-source license for Ice, you must comply with the terms and conditions listed in the associated license agreement; the GPL v2 terms and conditions do not apply.

The Ice software itself remains the same: the only difference between an open-source Ice and a commercial Ice are the license terms.

Documentation

Comments
  • Ice::UnsupportedEncodingException:    unsupported encoding version: 0.0

    Ice::UnsupportedEncodingException: unsupported encoding version: 0.0

    • Ice Version: 3.6.4
    • OS: Windows 10 x64
    • Distribution: Compiled self by MinGW 7.3.0 64bit

    I compiled the ICE and demo myself by using gcc in MinGW7.3.0 64bit. I built the demo cases by Qt Creator (MingW7.3.0) 64 bit When I test the demo ice/hello by , it shows below error:

    ........\ICE_DemoStudy\ICE_HOME\include/Ice/Protocol.h:186: Ice::UnsupportedEncodingException: encoding error: unsupported encoding version: 0.0 (can only support encodings compatible with version 1.1)

    I previously run the demo case about 1 year ago, it worked fine. Don't know why it suddenly went wrong... Capture

    opened by Jast4U 23
  • createObjectAdapterWithEndpoints not supported in Javascript

    createObjectAdapterWithEndpoints not supported in Javascript

    I need to create a callback and require to createObjectAdapterWithEndpoints in order to receive the callback. createObjectAdapter() is not working at all. I check the source code the method is there but it complains "::Ice::FeatureNotSupportedException".

    Is there something im not doing correct or is this a bug?

    question 
    opened by daveoon 20
  • CSharp unable to load service in netcore 3.1.100

    CSharp unable to load service in netcore 3.1.100

    Dec 06 09:39:49 localhost.localdomain dotnet[1712]: iceboxnet Error: 0 : Dec 06 09:39:49 localhost.localdomain dotnet[1712]: IceBox: error: IceBox.FailureException reason = "ServiceManager: unable to load service '/var...pl'" at IceBox.ServiceManagerI.startService(String service, S...


    In centos7, it works in net core 3.0, but throw the upper exception in net core 3.1.100. In windows, it works in net core 3.0 and 3.1.100.

    question csharp 
    opened by rainwolfchen 18
  • javax.net.ssl.SSLException: closing inbound before receiving peer's close_notify

    javax.net.ssl.SSLException: closing inbound before receiving peer's close_notify

    Hello, I try to use Ice with ssl support in OSGi container. I use OpenJDK 12.0.2, Apache Felix, Ice for java. When I stop server on client side I get an exception:

    javax.net.ssl|ERROR|29|Ice.ThreadPool.Client-0|2019-09-16 22:03:40.510 MSK|TransportContext.java:312|Fatal (INTERNAL_ERROR): closing inbound before receiving peer's close_notify (
    "throwable" : {
      javax.net.ssl.SSLException: closing inbound before receiving peer's close_notify
      	at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:133)
      	at java.base/sun.security.ssl.Alert.createSSLException(Alert.java:117)
      	at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:307)
      	at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:263)
      	at java.base/sun.security.ssl.TransportContext.fatal(TransportContext.java:254)
      	at java.base/sun.security.ssl.SSLEngineImpl.closeInbound(SSLEngineImpl.java:733)
      	at com.zeroc.IceSSL.TransceiverI.close(TransceiverI.java:147)
      	at com.zeroc.Ice.ConnectionI.finish(ConnectionI.java:1447)
      	at com.zeroc.Ice.ConnectionI.finished(ConnectionI.java:1378)
      	at com.zeroc.IceInternal.ThreadPool$FinishedWorkItem.execute(ThreadPool.java:37)
      	at com.zeroc.IceInternal.ThreadPoolWorkQueue.message(ThreadPoolWorkQueue.java:74)
      	at com.zeroc.IceInternal.ThreadPool.run(ThreadPool.java:412)
      	at com.zeroc.IceInternal.ThreadPool$EventHandlerThread.run(ThreadPool.java:786)
      	at java.base/java.lang.Thread.run(Thread.java:835)}
    
    )
    

    and vice versa when I stop client on server side I get the same exception. If we look at line 147 in the TrancieverI.java file, we will see the following code:

                try
                {
                    _engine.closeInbound();
                }
                catch(SSLException ex)
                {
                    //
                    // SSLEngine always raises an exception with this message:
                    //
                    // Inbound closed before receiving peer's close_notify: possible truncation attack?
                    //
                    // We would probably need to wait for a response in shutdown() to avoid this.
                    // For now, we'll ignore this exception.
                    //
                    //_instance.logger().error("IceSSL: error during close\n" + ex.getMessage());
                }
    

    In the comments to the SSLEngine.closeInbound() we can read: "If the application initiated the closing process by calling SSLEngine.closeOutbound(), under some circumstances it is not required that the initiator wait for the peer's corresponding close message. In such cases, this method need not be called." On line 113 of the TrancieverI.java file we find this call (_engine.closeOutbound()). When I commented out the code above, my server and client began to work without exception. If you need more detail you can see my project https://github.com/akabanov57/zeroc-ice-osgi Is this a bug or am I missing something? Thank you.

    question java 
    opened by akabanov57 17
  • Completely missed with Ice bidir and Node.js

    Completely missed with Ice bidir and Node.js

    Hi all. Sorry to file a bug with a question, but I can't found the correct way to fix my issue.

    I was readed all examples at https://github.com/zeroc-ice/ice-demos/blob/3.7/js/Ice/bidir/ also #194

    I am trying to get a callback from Murmur server with NodeJS client IN SAME SERVER (no remote server).

    This is the ice from Murmur: https://mumble.sourceforge.io/slice/1.3.0/Murmur.html

    And this is my testing code:

    const { Ice } = require("ice");
    const { Murmur } = require("./ice/Murmur.js");
    let communicator = null
    let proxy = null
    
    class MetaCallbackI extends Murmur.MetaCallback
    {
      started()
        {
            console.log('Started');
        }
    
        stopped()
        {
            console.log('Stopped')
        }
    }
    
    (async function _init() {
      try{
        const iceOptions = new Ice.InitializationData();
        iceOptions.properties = Ice.createProperties([], iceOptions.properties);
        iceOptions.properties.setProperty("Ice.Default.EncodingVersion", "1.0");
        iceOptions.properties.setProperty("Ice.ImplicitContext", "Shared");
        iceOptions.properties.setProperty("Ice.ACM.Client.Heartbeat=Always");
    
        communicator = Ice.initialize(iceOptions);
        communicator.getImplicitContext().put("secret", 'xxxx');
    
        proxy = await Murmur.MetaPrx.checkedCast(communicator.stringToProxy("Meta:tcp -h 127.0.0.1 -p 6502")); // proxy
        const adapter = await communicator.createObjectAdapter("");
        //adapter.activate()
    
        const receiver = Murmur.MetaCallbackPrx.uncheckedCast(adapter.addWithUUID(new MetaCallbackI()));
    
        proxy.ice_getCachedConnection().setAdapter(adapter);
        await proxy.addCallback(receiver);
        await communicator.waitForShutdown();
    
      }catch (ex){
        return {err: ex.toString()};
      }
    })()
    

    On Murmur's log I get:

    <W>2022-02-05 17:25:56.183 Added Ice MetaCallback b2404fd8-9147-4809-8bee-02b1a62ed913 -o -e 1.0

    but if I tried with a python client I get:

    <W>2022-02-05 17:26:14.699 Added Ice MetaCallback 364F6850-3F07-4F8B-A4F0-F8D46316B75A -o -e 1.0:tcp -h 127.0.0.1 -p 40397 -t 5000

    Also I was installed Glacier2 in Murmur server, but I can´t figure how to write the code based on my code and

    https://github.com/zeroc-ice/ice-demos/tree/3.7/js/Glacier2/simpleChat

    Appreciate any help or guidelines. I am completely lost

    Thanks

    question js 
    opened by NormandoHall 14
  • Combine with spring And read old server code(even updated)

    Combine with spring And read old server code(even updated)

    I have some problems . help me.

    1、How to integrate IceBox and IceGrid with Spring 2、I started the server and changed its processing code( servant ), it will still execute the old code process. just like having some server cache .

    I don't know how to do it ?

    question 
    opened by MHeartRain 14
  • Implement server name indication (SNI) for OpenSSL and SecureTransport backends (new property `IceSSL.ServerNameIndication`, default disabled)

    Implement server name indication (SNI) for OpenSSL and SecureTransport backends (new property `IceSSL.ServerNameIndication`, default disabled)

    Add property IceSSL.ServerNameIndication to send the SNI extension in TLS connections (currently only in OpenSSL/SecureTransport backends, defaults to 0). This is helpful, for example, if a web server in front of Ice secure WebSocket (WSS) endpoints needs to decide the certificate and backend based on requested hostname.

    opened by AndiDog 13
  • Add non-const overload to Ice::Request::getCurrent

    Add non-const overload to Ice::Request::getCurrent

    This enables C++ implementations of Ice::DispatchInterceptor to modify the incoming request before passing it to the servant. Due to the constness of Ice::Request::getCurrent, this was impossible before.

    This brings C++ in line with other language implementations, where such a limitation does not exist, as far as I can tell.

    Please let me know if this is something you guys are interested in merging, then I'll send the signed contributor agreement.

    opened by alnr 12
  • Review __setNoDelete usage pattern

    Review __setNoDelete usage pattern

    __setNoDelete allows to disable the self-deletion of an object when this object's refcount reaches 0 (applies to C++98 handles). It's primarily used in constructors when exceptions can occur. We should review our usage pattern in Ice C++ and make sure it's correct.

    See ICE-3791.

    opened by bernardnormier 11
  • Forward declarations limitation in ICE 3.7

    Forward declarations limitation in ICE 3.7

    In ICE 3.7 there is a breaking change with regard to forward declarations of interfaces and classes in Slice files. In 3.6, it was possible to forward-declare an interface or class and use its proxy in method parameters, return types, structures and classes. This is no longer possible in 3.7 as the compiler requires the complete definition of the forward-declared interface or class.

    This is a severe limitation and a deal breaker in our case. We have used this feature extensively to reduce dependencies between different components, reduce compile times and memory consumption during compilation. Consider a use case with a factory interface that contains methods for creating objects of different types (i.e. having different interfaces). Previously, those interfaces were forward-declared, which allowed users of this factory to only depend on the interfaces they needed. Now, the users have to include all interfaces, including their dependencies, which makes the API pretty much monolithic.

    This issue asks to revert the limitation or provide a suitable alternative.

    opened by Lastique 11
  • How can I build 3.7.3 with C++11 ?

    How can I build 3.7.3 with C++11 ?

    I can build cpp using gcc9.4.0 and build success,but when Link IceStrom.so occur error

    like this : undefined reference to `sssp(std::__cxx11::basic_string<char, std::char_traits, std::allocator >, char)

    so How Can I enable C++11 in Makefile

    question 
    opened by wubo2018 10
  • Support for ThreadPool SizeIO

    Support for ThreadPool SizeIO

    Today, Ice doesn't support configuring the number of threads that perform IO over connections. It's configured to a fixed value which is the minimum value of the number of processor cores or ThreadPool.Size.

    In cases where the network stack is fast and a reply or request has a very large payload, the non-blocking send on the socket can take some time and prevent other requests from being sent in parallel if all the thread pool IO threads are busy.

    A design that relies on sending very large requests or responses should be avoided since the request or reply will consume lots of memory and might lead to such issues. Implementing a Slice defined streaming interface or a read method that allows to receive the data in multiple chunks is a better solution.

    In any case, we could provide a property to configure the number of IO threads.

    enhancement 
    opened by bentoi 1
  • Bump decode-uri-component from 0.2.0 to 0.2.2 in /js

    Bump decode-uri-component from 0.2.0 to 0.2.2 in /js

    Bumps decode-uri-component from 0.2.0 to 0.2.2.

    Release notes

    Sourced from decode-uri-component's releases.

    v0.2.2

    • Prevent overwriting previously decoded tokens 980e0bf

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.1...v0.2.2

    v0.2.1

    • Switch to GitHub workflows 76abc93
    • Fix issue where decode throws - fixes #6 746ca5d
    • Update license (#1) 486d7e2
    • Tidelift tasks a650457
    • Meta tweaks 66e1c28

    https://github.com/SamVerschueren/decode-uri-component/compare/v0.2.0...v0.2.1

    Commits

    Dependabot compatibility score

    Dependabot will resolve any conflicts with this PR as long as you don't alter it yourself. You can also trigger a rebase manually by commenting @dependabot rebase.


    Dependabot commands and options

    You can trigger Dependabot actions by commenting on this PR:

    • @dependabot rebase will rebase this PR
    • @dependabot recreate will recreate this PR, overwriting any edits that have been made to it
    • @dependabot merge will merge this PR after your CI passes on it
    • @dependabot squash and merge will squash and merge this PR after your CI passes on it
    • @dependabot cancel merge will cancel a previously requested merge and block automerging
    • @dependabot reopen will reopen this PR if it is closed
    • @dependabot close will close this PR and stop Dependabot recreating it. You can achieve the same result by closing it manually
    • @dependabot ignore this major version will close this PR and stop Dependabot creating any more for this major version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this minor version will close this PR and stop Dependabot creating any more for this minor version (unless you reopen the PR or upgrade to it yourself)
    • @dependabot ignore this dependency will close this PR and stop Dependabot creating any more for this dependency (unless you reopen the PR or upgrade to it yourself)
    • @dependabot use these labels will set the current labels as the default for future PRs for this repo and language
    • @dependabot use these reviewers will set the current reviewers as the default for future PRs for this repo and language
    • @dependabot use these assignees will set the current assignees as the default for future PRs for this repo and language
    • @dependabot use this milestone will set the current milestone as the default for future PRs for this repo and language

    You can disable automated security fix PRs for this repo from the Security Alerts page.

    dependencies 
    opened by dependabot[bot] 0
  • NullPointerException in icegridgui

    NullPointerException in icegridgui

    Version(please complete the following information):

    • Ice Version 3.78
    • OS: Windows

    Describe the bug When I click in the 'Live Deployment Tab' on a 'Server Run Time Component' icegridgui fires a NullPointerException and the 'Server Properties' panel at the right is not shown.

    Exception in thread "AWT-EventQueue-0" java.lang.NullPointerException at com.zeroc.IceGridGUI.LiveDeployment.Node.expand(Node.java:272) at com.zeroc.IceGridGUI.LiveDeployment.Node.expand(Node.java:277) at com.zeroc.IceGridGUI.LiveDeployment.Server.getProperties(Server.java:890) at com.zeroc.IceGridGUI.LiveDeployment.ServerEditor.show(ServerEditor.java:120) at com.zeroc.IceGridGUI.LiveDeployment.Server.getEditor(Server.java:373) at com.zeroc.IceGridGUI.LiveDeploymentPane.showCurrentNode(LiveDeploymentPane.java:257) at com.zeroc.IceGridGUI.LiveDeploymentPane.showNode(LiveDeploymentPane.java:99) at com.zeroc.IceGridGUI.LiveDeploymentPane$SelectionListener.valueChanged(LiveDeploymentPane.java:296) at javax.swing.JTree.fireValueChanged(Unknown Source) at javax.swing.JTree$TreeSelectionRedirector.valueChanged(Unknown Source) at javax.swing.tree.DefaultTreeSelectionModel.fireValueChanged(Unknown Source) at javax.swing.tree.DefaultTreeSelectionModel.notifyPathChange(Unknown Source) at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPaths(Unknown Source) at javax.swing.tree.DefaultTreeSelectionModel.setSelectionPath(Unknown Source) at javax.swing.JTree.setSelectionPath(Unknown Source) at javax.swing.plaf.basic.BasicTreeUI.selectPathForEvent(Unknown Source) at javax.swing.plaf.basic.BasicTreeUI$Handler.handleSelection(Unknown Source) at javax.swing.plaf.basic.BasicTreeUI$Handler.mousePressed(Unknown Source) at java.awt.AWTEventMulticaster.mousePressed(Unknown Source) at java.awt.AWTEventMulticaster.mousePressed(Unknown Source) at java.awt.Component.processMouseEvent(Unknown Source) at javax.swing.JComponent.processMouseEvent(Unknown Source) at java.awt.Component.processEvent(Unknown Source) at java.awt.Container.processEvent(Unknown Source) at java.awt.Component.dispatchEventImpl(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.LightweightDispatcher.retargetMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.processMouseEvent(Unknown Source) at java.awt.LightweightDispatcher.dispatchEvent(Unknown Source) at java.awt.Container.dispatchEventImpl(Unknown Source) at java.awt.Window.dispatchEventImpl(Unknown Source) at java.awt.Component.dispatchEvent(Unknown Source) at java.awt.EventQueue.dispatchEventImpl(Unknown Source) at java.awt.EventQueue.access$500(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.awt.EventQueue$3.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.awt.EventQueue$4.run(Unknown Source) at java.security.AccessController.doPrivileged(Native Method) at java.security.ProtectionDomain$JavaSecurityAccessImpl.doIntersectionPrivilege(Unknown Source) at java.awt.EventQueue.dispatchEvent(Unknown Source) at java.awt.EventDispatchThread.pumpOneEventForFilters(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForFilter(Unknown Source) at java.awt.EventDispatchThread.pumpEventsForHierarchy(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.pumpEvents(Unknown Source) at java.awt.EventDispatchThread.run(Unknown Source)

    Side note: there is a 404 on 'Help->Contents'

    Regards, Emko

    opened by iivdam 2
  • Move away SecKeyChain deprecated APIs

    Move away SecKeyChain deprecated APIs

    The deprecation warnings were disabled in https://github.com/zeroc-ice/ice/pull/1397 but we should investigate with new APIs are available and move away from this deprecated APIs

    icessl 
    opened by pepone 0
  • Java 19 build failure

    Java 19 build failure

    * What went wrong:
    Could not open settings generic class cache for settings file '/home/vagrant/workspace/ice/3.7/java/settings.gradle' (/home/vagrant/.gradle/caches/7.4.2/scripts/4nlb9rhuaoqnqq88cn12yqltv).
    > BUG! exception in phase 'semantic analysis' in source unit '_BuildScript_' Unsupported class file major version 63
    
    java build-system 
    opened by externl 0
  • Problem on using ice in MATLAB

    Problem on using ice in MATLAB

    i m studying using ice in MATLAB and i want to compile my .m file into exe. so i use "mcc", but the exe goes wrong. Could you give me some advice. Thanks! Screenshot 2022-08-30 103259 Screenshot 2022-08-30 103345

    question 
    opened by fresh-ji 2
Releases(v3.7.8)
Owner
ZeroC Ice
Comprehensive RPC framework with support for C++, C#, Java, JavaScript, Python and more.
ZeroC Ice
Groupware server backend with RPC/HTTP, MAPI/HTTP, IMAP, POP3 and PHP-MAPI support

Gromox is the central groupware server component of grammm. It is capable of serving as a replacement for Microsoft Exchange and compatibles. Connecti

grammm 139 Dec 26, 2022
C++ framework for json-rpc (json remote procedure call)

I am currently working on a new C++17 implementation -> json-rpc-cxx. Master Develop | libjson-rpc-cpp This framework provides cross platform JSON-RPC

Peter Spiess-Knafl 833 Jan 7, 2023
c++11, high performance, cross platform, easy to use rpc framework.

modern C++(C++11), simple, easy to use rpc framework

qicosmos 1.2k Dec 30, 2022
Cap'n Proto serialization/RPC system - core tools and C++ library

Cap'n Proto is an insanely fast data interchange format and capability-based RPC system. Think JSON, except binary. Or think Protocol Buffers, except

Cap'n Proto 9.5k Dec 30, 2022
rpclib is a modern C++ msgpack-RPC server and client library

rpclib rpclib is a RPC library for C++, providing both a client and server implementation. It is built using modern C++14, and as such, requires a rec

null 1.4k Dec 30, 2022
a simple RPC wrapper generator to C/C++ functions

This project initiated from the following practical problem. To control experimental equipment via computers, manufactures provide software drivers wi

Pearu Peterson 33 Jan 8, 2023
The C based gRPC (C++, Python, Ruby, Objective-C, PHP, C#)

gRPC - An RPC library and framework gRPC is a modern, open source, high-performance remote procedure call (RPC) framework that can run anywhere. gRPC

grpc 36.6k Dec 30, 2022
In-progress multi-PC remote management and administration software

Volition is software to administrate, configure, and monitor vast amounts of PCs simultaneously. The end goal is to create something significantly easier to use and more flexible than Puppet or Ansible, while allowing a single command to perform a similar action on thousands of nodes running vastly different operating systems.

null 5 May 9, 2022
Industrial-grade RPC framework used throughout Baidu, with 1,000,000+ instances and thousands kinds of services. "brpc" means "better RPC".

中文版 An industrial-grade RPC framework used throughout Baidu, with 1,000,000+ instances(not counting clients) and thousands kinds of services. "brpc" m

The Apache Software Foundation 14.2k Dec 27, 2022
Fast Binary Encoding is ultra fast and universal serialization solution for C++, C#, Go, Java, JavaScript, Kotlin, Python, Ruby, Swift

Fast Binary Encoding (FBE) Fast Binary Encoding allows to describe any domain models, business objects, complex data structures, client/server request

Ivan Shynkarenka 654 Jan 2, 2023
Scalable, Portable and Distributed Gradient Boosting (GBDT, GBRT or GBM) Library, for Python, R, Java, Scala, C++ and more. Runs on single machine, Hadoop, Spark, Dask, Flink and DataFlow

eXtreme Gradient Boosting Community | Documentation | Resources | Contributors | Release Notes XGBoost is an optimized distributed gradient boosting l

Distributed (Deep) Machine Learning Community 23.6k Dec 30, 2022
Scalable, Portable and Distributed Gradient Boosting (GBDT, GBRT or GBM) Library, for Python, R, Java, Scala, C++ and more. Runs on single machine, Hadoop, Spark, Dask, Flink and DataFlow

eXtreme Gradient Boosting Community | Documentation | Resources | Contributors | Release Notes XGBoost is an optimized distributed gradient boosting l

Distributed (Deep) Machine Learning Community 23.6k Jan 3, 2023
Packio - An asynchronous msgpack-RPC and JSON-RPC library built on top of Boost.Asio.

Header-only | JSON-RPC | msgpack-RPC | asio | coroutines This library requires C++17 and is designed as an extension to boost.asio. It will let you bu

Quentin Chateau 58 Dec 26, 2022
Python Inference Script is a Python package that enables developers to author machine learning workflows in Python and deploy without Python.

Python Inference Script(PyIS) Python Inference Script is a Python package that enables developers to author machine learning workflows in Python and d

Microsoft 13 Nov 4, 2022
Lightweight, Portable, Flexible Distributed/Mobile Deep Learning with Dynamic, Mutation-aware Dataflow Dep Scheduler; for Python, R, Julia, Scala, Go, Javascript and more

Apache MXNet (incubating) for Deep Learning Apache MXNet is a deep learning framework designed for both efficiency and flexibility. It allows you to m

The Apache Software Foundation 20.2k Dec 31, 2022
RPC++ is a tool for Discord RPC (Rich Presence) to let your friends know about your Linux system

RPC++ RPC++ is a tool for Discord RPC (Rich Presence) to let your friends know about your Linux system Installing requirements Arch based systems pacm

grialion 4 Jul 6, 2022
🎵 Music notation engraving library for MEI with MusicXML and Humdrum support and various toolkits (JavaScript, Python)

Verovio is a fast, portable and lightweight library for engraving Music Encoding Initiative (MEI) digital scores into SVG images. Verovio also contain

RISM Switzerland 519 Jan 1, 2023
Comprehensive Python Cheatsheet

Comprehensive Python Cheatsheet Download text file, Buy PDF, Fork me on GitHub or Check out FAQ. Contents 1. Collections: List, Dictionary, Set, Tuple

Jure Šorn 31.3k Dec 29, 2022
Google's common Java, C++ and JavaScript library for parsing, formatting, and validating international phone numbers.

What is it? Google's common Java, C++ and JavaScript library for parsing, formatting, and validating international phone numbers. The Java version is

Google 14.5k Dec 30, 2022
Simple hook that prevent to halt Java Virtual Machine (mostly used in hacking java programs)

JavaExitHook Simple hook that prevent to halt Java Virtual Machine (mostly used in hacking java programs) What is used for? Idea to create that simple

null 14 Nov 11, 2022