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

Issues
  • 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
  • Bogus build flags for rhel x86 builds

    Bogus build flags for rhel x86 builds

    We build the x86 packages with this command:

    https://github.com/zeroc-ice/ice-packaging/blob/1c4d1eb93138fafbb9a21f4a08040044d67cc5e1/ice/rpm/ice.spec#L455-L470

    Here CXXFLAGS contains flags appropriate for x86 builds, these flags end up being used to build Slice compilers in x64 mode (because we always build the Slice compiler using x64)

    The build end up failing with

    g++ -O2 -flto=auto -ffat-lto-objects -fexceptions -g -grecord-gcc-switches -pipe -Wall -Werror=format-security -Wp,-D_FORTIFY_SOURCE=2 -Wp,-D_GLIBCXX_ASSERTIONS -specs=/usr/lib/rpm/redhat/redhat-hardened-cc1 -fstack-protector-strong -specs=/usr/lib/rpm/redhat/redhat-annobin-cc1  -m32 -march=i686 -mtune=generic -msse2 -mfpmath=sse -mstackrealign -fasynchronous-unwind-tables -fstack-clash-protection -fcf-protection -MT src/Slice/build/x64/static/Checksum.o -MMD -MP -MF  src/Slice/build/x64/static/Checksum.Td -Wall -Wextra -Wredundant-decls -Wshadow -Wdeprecated -Werror -pthread -DNDEBUG -Isrc -Isrc/Slice/generated -Iinclude -Iinclude/generated -DICE_BUILDING_SRC -m64 -DICE_STATIC_LIBS  -c src/Slice/Checksum.cpp -o src/Slice/build/x64/static/Checksum.o
    cc1plus: error: CPU you selected does not support x86-64 instruction set
    cc1plus: error: '-fcf-protection=full' is not supported for this target
    cc1plus: error: CPU you selected does not support x86-64 instruction set
    cc1plus: error: '-fcf-protection=full' is not supported for this target
    cc1plus: error: CPU you selected does not support x86-64 instruction set
    cc1plus: error: '-fcf-protection=full' is not supported for this target
    make[1]: *** [Makefile:26: src/Slice/build/x64/static/Scanner.o] Error 1
    make[1]: *** Waiting for unfinished jobs....
    make[1]: *** [Makefile:26: src/Slice/build/x64/static/CPlusPlusUtil.o] Error 1
    make[1]: *** [Makefile:26: src/Slice/build/x64/static/Grammar.o] Error 1
    cc1plus: error: CPU you selected does not support x86-64 instruction set
    cc1plus: error: '-fcf-protection=full' is not supported for this target
    make[1]: *** [Makefile:26: src/Slice/build/x64/static/Checksum.o] Error 1
    make[1]: Leaving directory '/home/vagrant/workspace/dist-utils/build/ice/builds/rpm/bin/BUILD/ice-3.7/cpp'
    

    The command line contains -m32 -march=i686 and -m64 which is causing the failure.

    bug build-system 
    opened by pepone 0
  • 3.7.7: Failure to build on `:glacier2:compileSlice` task

    3.7.7: Failure to build on `:glacier2:compileSlice` task

    Version(please complete the following information):

    • Ice Version 3.7.7
    • OS: Kubuntu 21.10
    • Distribution: Apt
    • Gradle: 7.3

    Describe the bug ZeroC ICE fails to compile during :glacier2:compileSlice task:

    > Task :glacier2:compileSlice FAILED
    Watching 11 directories to track changes
    :glacier2:compileSlice (Thread[Daemon worker,5,main]) completed. Took 0.019 secs.
    
    FAILURE: Build failed with an exception.
    
    * What went wrong:
    A problem was found with the configuration of task ':glacier2:compileSlice' (type 'SliceTask').
      - In plugin 'com.zeroc.gradle.icebuilder.slice.SlicePlugin' type 'com.zeroc.gradle.icebuilder.slice.SliceTask' property 'timestamps' is missing an input or output annotation.
        
        Reason: A property without annotation isn't considered during up-to-date checking.
        
        Possible solutions:
          1. Add an input or output annotation.
          2. Mark it as @Internal.
        
        Please refer to https://docs.gradle.org/7.3/userguide/validation_problems.html#missing_annotation for more details about this problem.
    
    * Try:
    > Run with --debug option to get more log output.
    > Run with --scan to get full insights.
    
    * Exception is:
    org.gradle.internal.execution.WorkValidationException: A problem was found with the configuration of task ':glacier2:compileSlice' (type 'SliceTask').
      - In plugin 'com.zeroc.gradle.icebuilder.slice.SlicePlugin' type 'com.zeroc.gradle.icebuilder.slice.SliceTask' property 'timestamps' is missing an input or output annotation.
        
        Reason: A property without annotation isn't considered during up-to-date checking.
        
        Possible solutions:
          1. Add an input or output annotation.
          2. Mark it as @Internal.
        
        Please refer to https://docs.gradle.org/7.3/userguide/validation_problems.html#missing_annotation for more details about this problem.
    	at org.gradle.internal.execution.WorkValidationException$BuilderWithSummary.build(WorkValidationException.java:109)
    	at org.gradle.internal.execution.WorkValidationException$BuilderWithSummary.get(WorkValidationException.java:91)
    	at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:106)
    	at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:57)
    	at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:76)
    	at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:50)
    	at org.gradle.internal.execution.steps.SkipEmptyWorkStep.lambda$execute$2(SkipEmptyWorkStep.java:93)
    	at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:93)
    	at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:34)
    	at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38)
    	at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:43)
    	at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:31)
    	at org.gradle.internal.execution.steps.AssignWorkspaceStep.lambda$execute$0(AssignWorkspaceStep.java:40)
    	at org.gradle.api.internal.tasks.execution.TaskExecution$3.withWorkspace(TaskExecution.java:284)
    	at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:40)
    	at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:30)
    	at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:37)
    	at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:27)
    	at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:44)
    	at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:33)
    	at org.gradle.internal.execution.impl.DefaultExecutionEngine$1.execute(DefaultExecutionEngine.java:76)
    	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:142)
    	at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:131)
    	at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:77)
    	at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
    	at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
    	at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
    	at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:56)
    	at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
    	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
    	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
    	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
    	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
    	at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
    	at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:74)
    	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:402)
    	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:389)
    	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:382)
    	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:368)
    	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.lambda$run$0(DefaultPlanExecutor.java:127)
    	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:191)
    	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.executeNextNode(DefaultPlanExecutor.java:182)
    	at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:124)
    	at org.gradle.execution.plan.DefaultPlanExecutor.process(DefaultPlanExecutor.java:72)
    	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph.executeWithServices(DefaultTaskExecutionGraph.java:187)
    	at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph.execute(DefaultTaskExecutionGraph.java:180)
    	at org.gradle.execution.SelectedTaskExecutionAction.execute(SelectedTaskExecutionAction.java:39)
    	at org.gradle.execution.DefaultBuildWorkExecutor.execute(DefaultBuildWorkExecutor.java:44)
    	at org.gradle.execution.DefaultBuildWorkExecutor.access$000(DefaultBuildWorkExecutor.java:26)
    	at org.gradle.execution.DefaultBuildWorkExecutor$1.proceed(DefaultBuildWorkExecutor.java:52)
    	at org.gradle.execution.DryRunBuildExecutionAction.execute(DryRunBuildExecutionAction.java:49)
    	at org.gradle.execution.DefaultBuildWorkExecutor.execute(DefaultBuildWorkExecutor.java:44)
    	at org.gradle.execution.DefaultBuildWorkExecutor.execute(DefaultBuildWorkExecutor.java:36)
    	at org.gradle.execution.BuildOperationFiringBuildWorkerExecutor$ExecuteTasks.call(BuildOperationFiringBuildWorkerExecutor.java:51)
    	at org.gradle.execution.BuildOperationFiringBuildWorkerExecutor$ExecuteTasks.call(BuildOperationFiringBuildWorkerExecutor.java:42)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
    	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
    	at org.gradle.execution.BuildOperationFiringBuildWorkerExecutor.execute(BuildOperationFiringBuildWorkerExecutor.java:39)
    	at org.gradle.internal.build.DefaultBuildLifecycleController.lambda$executeTasks$3(DefaultBuildLifecycleController.java:136)
    	at org.gradle.internal.build.StateTransitionController.doTransition(StateTransitionController.java:243)
    	at org.gradle.internal.build.StateTransitionController.tryTransition(StateTransitionController.java:158)
    	at org.gradle.internal.build.DefaultBuildLifecycleController.executeTasks(DefaultBuildLifecycleController.java:136)
    	at org.gradle.internal.buildtree.DefaultBuildTreeWorkExecutor.execute(DefaultBuildTreeWorkExecutor.java:35)
    	at org.gradle.internal.buildtree.BuildOperationFiringBuildTreeWorkExecutor$1.call(BuildOperationFiringBuildTreeWorkExecutor.java:40)
    	at org.gradle.internal.buildtree.BuildOperationFiringBuildTreeWorkExecutor$1.call(BuildOperationFiringBuildTreeWorkExecutor.java:37)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
    	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
    	at org.gradle.internal.buildtree.BuildOperationFiringBuildTreeWorkExecutor.execute(BuildOperationFiringBuildTreeWorkExecutor.java:37)
    	at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.lambda$doScheduleAndRunTasks$2(DefaultBuildTreeLifecycleController.java:87)
    	at org.gradle.composite.internal.DefaultIncludedBuildTaskGraph.withNewTaskGraph(DefaultIncludedBuildTaskGraph.java:94)
    	at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.doScheduleAndRunTasks(DefaultBuildTreeLifecycleController.java:85)
    	at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.lambda$runBuild$4(DefaultBuildTreeLifecycleController.java:103)
    	at org.gradle.internal.build.StateTransitionController.lambda$transition$0(StateTransitionController.java:145)
    	at org.gradle.internal.build.StateTransitionController.doTransition(StateTransitionController.java:243)
    	at org.gradle.internal.build.StateTransitionController.transition(StateTransitionController.java:145)
    	at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.runBuild(DefaultBuildTreeLifecycleController.java:100)
    	at org.gradle.internal.buildtree.DefaultBuildTreeLifecycleController.scheduleAndRunTasks(DefaultBuildTreeLifecycleController.java:66)
    	at org.gradle.tooling.internal.provider.ExecuteBuildActionRunner.run(ExecuteBuildActionRunner.java:31)
    	at org.gradle.launcher.exec.ChainingBuildActionRunner.run(ChainingBuildActionRunner.java:35)
    	at org.gradle.internal.buildtree.ProblemReportingBuildActionRunner.run(ProblemReportingBuildActionRunner.java:49)
    	at org.gradle.launcher.exec.BuildOutcomeReportingBuildActionRunner.run(BuildOutcomeReportingBuildActionRunner.java:69)
    	at org.gradle.tooling.internal.provider.FileSystemWatchingBuildActionRunner.run(FileSystemWatchingBuildActionRunner.java:114)
    	at org.gradle.launcher.exec.BuildCompletionNotifyingBuildActionRunner.run(BuildCompletionNotifyingBuildActionRunner.java:41)
    	at org.gradle.launcher.exec.RootBuildLifecycleBuildActionExecutor.lambda$execute$0(RootBuildLifecycleBuildActionExecutor.java:40)
    	at org.gradle.composite.internal.DefaultRootBuildState.run(DefaultRootBuildState.java:155)
    	at org.gradle.launcher.exec.RootBuildLifecycleBuildActionExecutor.execute(RootBuildLifecycleBuildActionExecutor.java:40)
    	at org.gradle.internal.buildtree.DefaultBuildTreeContext.execute(DefaultBuildTreeContext.java:40)
    	at org.gradle.launcher.exec.BuildTreeLifecycleBuildActionExecutor.lambda$execute$0(BuildTreeLifecycleBuildActionExecutor.java:65)
    	at org.gradle.internal.buildtree.BuildTreeState.run(BuildTreeState.java:53)
    	at org.gradle.launcher.exec.BuildTreeLifecycleBuildActionExecutor.execute(BuildTreeLifecycleBuildActionExecutor.java:65)
    	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor$3.call(RunAsBuildOperationBuildActionExecutor.java:61)
    	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor$3.call(RunAsBuildOperationBuildActionExecutor.java:57)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
    	at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
    	at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
    	at org.gradle.launcher.exec.RunAsBuildOperationBuildActionExecutor.execute(RunAsBuildOperationBuildActionExecutor.java:57)
    	at org.gradle.launcher.exec.RunAsWorkerThreadBuildActionExecutor.lambda$execute$0(RunAsWorkerThreadBuildActionExecutor.java:38)
    	at org.gradle.internal.work.DefaultWorkerLeaseService.withLocks(DefaultWorkerLeaseService.java:211)
    	at org.gradle.launcher.exec.RunAsWorkerThreadBuildActionExecutor.execute(RunAsWorkerThreadBuildActionExecutor.java:38)
    	at org.gradle.tooling.internal.provider.ContinuousBuildActionExecutor.execute(ContinuousBuildActionExecutor.java:103)
    	at org.gradle.tooling.internal.provider.SubscribableBuildActionExecutor.execute(SubscribableBuildActionExecutor.java:64)
    	at org.gradle.internal.session.DefaultBuildSessionContext.execute(DefaultBuildSessionContext.java:46)
    	at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter$ActionImpl.apply(BuildSessionLifecycleBuildActionExecuter.java:100)
    	at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter$ActionImpl.apply(BuildSessionLifecycleBuildActionExecuter.java:88)
    	at org.gradle.internal.session.BuildSessionState.run(BuildSessionState.java:69)
    	at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter.execute(BuildSessionLifecycleBuildActionExecuter.java:62)
    	at org.gradle.tooling.internal.provider.BuildSessionLifecycleBuildActionExecuter.execute(BuildSessionLifecycleBuildActionExecuter.java:41)
    	at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:36)
    	at org.gradle.tooling.internal.provider.GradleThreadBuildActionExecuter.execute(GradleThreadBuildActionExecuter.java:25)
    	at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:63)
    	at org.gradle.tooling.internal.provider.StartParamsValidatingActionExecuter.execute(StartParamsValidatingActionExecuter.java:31)
    	at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:58)
    	at org.gradle.tooling.internal.provider.SessionFailureReportingActionExecuter.execute(SessionFailureReportingActionExecuter.java:42)
    	at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:47)
    	at org.gradle.tooling.internal.provider.SetupLoggingActionExecuter.execute(SetupLoggingActionExecuter.java:31)
    	at org.gradle.launcher.daemon.server.exec.ExecuteBuild.doBuild(ExecuteBuild.java:65)
    	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
    	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    	at org.gradle.launcher.daemon.server.exec.WatchForDisconnection.execute(WatchForDisconnection.java:39)
    	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    	at org.gradle.launcher.daemon.server.exec.ResetDeprecationLogger.execute(ResetDeprecationLogger.java:29)
    	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    	at org.gradle.launcher.daemon.server.exec.RequestStopIfSingleUsedDaemon.execute(RequestStopIfSingleUsedDaemon.java:35)
    	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:78)
    	at org.gradle.launcher.daemon.server.exec.ForwardClientInput$2.create(ForwardClientInput.java:75)
    	at org.gradle.util.internal.Swapper.swap(Swapper.java:38)
    	at org.gradle.launcher.daemon.server.exec.ForwardClientInput.execute(ForwardClientInput.java:75)
    	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    	at org.gradle.launcher.daemon.server.exec.LogAndCheckHealth.execute(LogAndCheckHealth.java:50)
    	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    	at org.gradle.launcher.daemon.server.exec.LogToClient.doBuild(LogToClient.java:63)
    	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
    	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    	at org.gradle.launcher.daemon.server.exec.EstablishBuildEnvironment.doBuild(EstablishBuildEnvironment.java:84)
    	at org.gradle.launcher.daemon.server.exec.BuildCommandOnly.execute(BuildCommandOnly.java:37)
    	at org.gradle.launcher.daemon.server.api.DaemonCommandExecution.proceed(DaemonCommandExecution.java:104)
    	at org.gradle.launcher.daemon.server.exec.StartBuildOrRespondWithBusy$1.run(StartBuildOrRespondWithBusy.java:52)
    	at org.gradle.launcher.daemon.server.DaemonStateCoordinator$1.run(DaemonStateCoordinator.java:297)
    	at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
    	at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:48)
    	at org.gradle.internal.concurrent.ThreadFactoryImpl$ManagedThreadRunnable.run(ThreadFactoryImpl.java:61)
    
    
    * Get more help at https://help.gradle.org
    
    Deprecated Gradle features were used in this build, making it incompatible with Gradle 8.0.
    
    You can use '--warning-mode all' to show the individual deprecation warnings and determine if they come from your own scripts or plugins.
    
    See https://docs.gradle.org/7.3/userguide/command_line_interface.html#sec:command_line_warnings
    

    Expected behavior Compilation should succeed.

    Additional context This problem was not present with ZeroC ICE 3.7.6 and Gradle 6.3.

    Gradle versions are taken from java/gradle/wrapper/gradle-wrapper.properties of the respective ZeroC ICE releases.

    opened by Lastique 11
  • Port IceSSL TrustError updates to main

    Port IceSSL TrustError updates to main

    https://github.com/zeroc-ice/ice/pull/1270

    For main we can consider moving the trustError data member to IceSSL::Connection info and get rid of getTrustError as there are no binary compatibility issues.

    cpp task 
    opened by pepone 0
  • Icestorm: Max Subscriptions at 2048 for single topic?

    Icestorm: Max Subscriptions at 2048 for single topic?

    We recently had a segfault on icestorm, and luckily we had trace logs on, but we did lose the core dump (machine didn't have enough disk to store it).

    segfault at 4030 ip 00007ffff7184f48 sp 00007fff9a7fac20 error 4 in libstdc++.so.6.0.19[7ffff70c6000+e9000]

    After analyzing the trace logs i noticed that the last valid log was adding a subscription to one topic and it had exactly 2048 current subscriptions. This number seemed highly suspect, so i started looking into the configs and code for any setting that might correlate, but was not able to find anything.

    We're running 3.6.2 version of the libraries in a cluster of 3 nodes running on centos 7.3. Our icestorm configs are as follows:

    # Server configuration
    Ice.Admin.ServerId=$NodeName[1/2/3]
    Ice.ProgramName=$NodeName[1/2/3]
    IceBox.Service.IceStorm=IceStormService,36:createIceStorm --Ice.Config='/etc/zeroc/db3/node/servers/$NodeName[1/2/3]/config/config_IceStorm'
    IceBox.LoadOrder=IceStorm
    # Server descriptor properties
    IceMX.Metrics.Debug.GroupBy=id
    IceMX.Metrics.Debug.Disabled=1
    IceMX.Metrics.ByParent.GroupBy=parent
    IceMX.Metrics.ByParent.Disabled=1
    Ice.MessageSizeMax=2048000
    Ice.Admin.Endpoints=tcp -p 10003
    Ice.Admin.InstanceName=server
    IceMX.Metrics.icebox.GroupBy=id
    IceMX.Metrics.icebox.Disabled=1
    Ice.StdErr=/var/log/IceGrid/$NodeName[1/2/3].err
    Ice.StdOut=/var/log/IceGrid/$NodeName[1/2/3].out
    Ice.Default.Locator=$IceGridName/Locator:default -h $Node1IP -p $Node1NormPort:ws -h $Node1IP -p $Node1WSPort:default -h $Node2IP -p $Node2NormPort:ws -h $Node2IP -p $Node2WSPort:default -h $Node3IP -p $Node3NormPort:ws -h $Node3IP -p $Node3WSPort
    

    We're going to try updating the Ice.MessageSizeMax in case there is some internal messaging between the nodes that is also using this config, but we're not sure this is actually the cause. We've also had other segfaults more recently that have not recently had 2048 subscribers at the time. These might be attributed to this pull request, but that is much of a shot in the dark: https://github.com/zeroc-ice/ice/pull/1259, https://github.com/zeroc-ice/ice/pull/1260

    Any help pointing towards where this issue might lie, would be greatly appreciated. We're having multiple segfaults about once every 3 weeks or so, some auto recover (we try and restart the service if it goes down) most require a full restart.

    opened by wilstoff 2
  • Looking into improving build time of applications using the new C++11 mapping

    Looking into improving build time of applications using the new C++11 mapping

    Builds of applications using the new C++11 mapping are quite a bit slower than with the C++98 mapping. The increase in template usage is likely to explain the additional compile time. It would be good to investigate whether or not we can improve our use of templates to reduce build times.

    enhancement cpp 
    opened by bentoi 1
  • Replace the 'format(...)' Metadata with 'sliced-format'

    Replace the 'format(...)' Metadata with 'sliced-format'

    Slice currently supports 3 different arguments for the format metadata: default, compact, and sliced. In 4.0 compact will become the new default, cutting this list down to 2 options. Having a metadata directive for just 2 options seems excessive, especially when one of them is already set by default.

    Instead, we should remove the metadata, and add a new sliced-format metadata. When it's specified, the format will be sliced, and when it isn't, it will be compact by default.

    slice metadata 
    opened by InsertCreativityHere 0
Releases(v3.7.7)
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 120 Jul 2, 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 806 Aug 7, 2022
c++11, high performance, cross platform, easy to use rpc framework.

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

qicosmos 1.1k Jul 31, 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.1k Aug 11, 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.3k Aug 4, 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 32 Jan 25, 2022
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 35.2k Aug 8, 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 13.6k Aug 2, 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 591 Aug 2, 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 23k Aug 3, 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 23k Aug 6, 2022
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 47 Jul 21, 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
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 20k Aug 5, 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 10 Feb 23, 2022
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 29.8k Aug 2, 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 493 Aug 3, 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 14k Aug 6, 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 13 Jul 23, 2022
Like feh, but better, faster, more image formats, simpler, more lightweight, animation support, and better UI

Like feh, but better, faster, more image formats, simpler, more lightweight, animation support, and better UI

martin 10 Jul 27, 2022
Bypass UAC at any level by abusing the Program Compatibility Assistant with RPC, WDI, and more Windows components

ByeIntegrity 8.0 The eighth Windows privilege escalation attack in the ByeIntegrity family. ByeIntegrity 8.0 is the most complex one I've created so f

Arush Agarampur 212 Jul 11, 2022
Triton Python and C++ client libraries and example, and client examples for go, java and scala.

Triton Client Libraries and Examples To simplify communication with Triton, the Triton project provides several client libraries and examples of how t

Triton Inference Server 164 Aug 7, 2022
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 120 Jul 2, 2022
Gromox - Groupware server backend with MAPI/HTTP, RPC/HTTP, IMAP, POP3 and PHP-MAPI support for grommunio

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

grommunio 120 Jul 2, 2022
Support for multiple RPC protocols in a single library

AnyRPC A multiprotocol remote procedure call system for C++ Overview AnyRPC provides a common system to work with a number of different remote procedu

Steve Gieseking 56 Jul 26, 2022
A comprehensive catalog of modern and classic books on C++ programming language

A comprehensive catalog of modern and classic books on C++ programming language

Yurii Cherkasov 337 Aug 6, 2022