【Hacker News搬运】展示HN:Iceoryx2–Rust、C++和C的快速IPC库
-
Title: Show HN: Iceoryx2 – Fast IPC Library for Rust, C++, and C
展示HN:Iceoryx2–Rust、C++和C的快速IPC库
Text: Hello everyone,<p>Today we released iceoryx2 v0.4!<p>iceoryx2 is a service-based inter-process communication (IPC) library designed
to make communication between processes as fast as possible - like Unix domain
sockets or message queues, but orders of magnitude faster and easier to use. It
also comes with advanced features such as circular buffers, history, event
notifications, publish-subscribe messaging, and a decentralized architecture
with no need for a broker.<p>For example, if you're working in robotics and need to process frames from a
camera across multiple processes, iceoryx2 makes it simple to set that up. Need
to retain only the latest three camera images? No problem - circular buffers
prevent your memory from overflowing, even if a process is lagging. The history
feature ensures you get the last three images immediately after connecting to
the camera service, as long as they’re still available.<p>Another great use case is for GUI applications, such as window managers or
editors. If you want to support plugins in multiple languages, iceoryx2 allows
you to connect processes - perhaps to remotely control your editor or window
manager. Best of all, thanks to zero-copy communication, you can transfer
gigabytes of data with incredibly low latency.<p>Speaking of latency, on some systems, we've achieved latency below 100ns when
sending data between processes - and we haven't even begun serious performance
optimizations yet. So, there’s still room for improvement! If you’re in
high-frequency trading or any other use case where ultra-low latency matters,
iceoryx2 might be just what you need.<p>If you’re curious to learn more about the new features and what’s coming next,
check out the full iceoryx2 v0.4 release announcement.<p>Elfenpiff<p>Links:<p>* GitHub: <a href="https://github.com/eclipse-iceoryx/iceoryx2">https://github.com/eclipse-iceoryx/iceoryx2</a>- iceoryx2 v0.4 release announcement: <a href="https://ekxide.io/blog/iceoryx2-0-4-release/" rel="nofollow">https://ekxide.io/blog/iceoryx2-0-4-release/</a>
- crates.io: <a href="https://crates.io/crates/iceoryx2" rel="nofollow">https://crates.io/crates/iceoryx2</a>
- docs.rs: <a href="https://docs.rs/iceoryx2/0.4.0/iceoryx2/" rel="nofollow">https://docs.rs/iceoryx2/0.4.0/iceoryx2/</a>
大家好,<p>今天我们发布了iceoryx2 v0.4<p> iceoryx2是一个基于服务的进程间通信(IPC)库使进程之间的通信尽可能快,就像Unix域一样套接字或消息队列,但使用起来更快、更容易。它还具有高级功能,如循环缓冲区、历史记录、事件通知、发布-订阅消息传递和去中心化架构不需要经纪人<p> 例如,如果您;正在机器人领域重新工作,需要处理来自iceoryx2支持多个进程的摄像头,使设置变得简单。需要只保留最新的三张相机图像?没问题-循环缓冲区即使进程滞后,也要防止内存溢出。历史该功能可确保您在连接到后立即获得最后三张图像只要相机服务仍然可用<p> 另一个很好的用例是GUI应用程序,如窗口管理器或编辑。如果你想支持多种语言的插件,iceoryx2允许您可以连接进程,或许是为了远程控制您的编辑器或窗口经理。最重要的是,由于零拷贝通信,您可以转移千兆字节的数据,延迟极低<p> 说到延迟,在某些系统上,我们;ve在以下情况下实现了低于100ns的延迟在进程之间发送数据-我们没有;甚至没有开始认真的表演优化尚未完成。所以,还有改进的余地!如果你在高频交易或超低延迟重要的任何其他用例,iceoryx2可能正是你需要的<p> 如果你想了解更多关于新功能和接下来会发生什么的信息,查看完整的iceoryx2 v0.4发布公告<p> Elfenpiff<p>链接:<p>*GitHub:<a href=“https:/;GitHub.com/ eclipse iceoryx  iceoryx2”>https:/;github.com;日食冰角;冰库2</a>*iceoryx2 v0.4发布公告:<a href=“https:/;ekxide.io/  blog! iceoryx2-0-4-release"”rel=“nofollow”>https:/;ekxide.io;博客/;iceoryx2-0-4释放</一*crates.io:<a href=“https:”crates.io“crates.io.”iceoryx2“rel=”nofollow“>https:”/;板条箱.io;板条箱;冰库2</a>*docs.rs:<a href=“https:”docs.rs“iceoryx2”0.4.0“iceoryx2”rel=“nofollow”>https:”/;docs.rs™;iceoryx2;0.4.0°F;iceoryx2</一
Url: https://ekxide.io/blog/iceoryx2-0-4-release/
很抱歉,作为一个文本生成的AI,我无法直接访问或抓取网页内容。不过,我可以根据你提供的链接,尝试描述该网页可能包含的内容,并提供一些分析。 链接指向的是Eclipse IoT项目的博客,具体是关于Iceoryx 2.0.4版本的发布文章。以下是该网页可能包含的内容和总结: **内容可能包括:** 1. **发布说明**:介绍Iceoryx 2.0.4版本的主要更新和新特性。 2. **更新日志**:详细列出自上一个版本以来所做的更改,包括新功能、改进和修复的bug。 3. **兼容性和迁移指南**:对于使用旧版本的用户,提供升级到2.0.4版本的兼容性信息和迁移步骤。 4. **性能改进**:讨论新版本在性能方面的提升。 5. **安全更新**:如果有的话,说明新版本中包含的安全补丁和漏洞修复。 6. **用户反馈**:可能包含用户对新版本的评价和反馈。 **总结:** Iceoryx 2.0.4版本的发布可能标志着该项目的进一步成熟和稳定。新版本可能引入了新的功能和性能提升,同时修复了之前版本的bug。对于Iceoryx的用户来说,这个更新可能意味着更好的系统性能、更高的安全性和更流畅的开发体验。 若要获取详细的内容和具体更新,建议直接访问提供的链接并阅读博客文章。如果内容不是中文,可能需要使用在线翻译工具将内容翻译成中文以便理解。
Post by: elfenpiff
Comments:
hardwaresofton: Been doing some IPC experiments recently following the 3tilley post[0], because there just isn't enough definitive information (even if it's a snapshot in time) out there.<p>Shared memory is <i>crazy</i> fast, and I'm surprised that there aren't more things that take advantage of it. Super odd that gRPC doesn't do shared memory, and basically never plans to?[1].<p>All that said, the constructive criticism I can offer for this post is that in mass-consumption announcements like this one for your project, you should:<p>- RPC throughput (with the usual caveats/disclaimers)
- Comparison (ideally graphed) to an alternative approach (ex. domain sockets)
- Your best/most concise & expressive usage snippet<p>100ns is great to know, but I would really like to know how much RPC/s this translates to <i>without</i> doing the math, or seeing it with realistic de-serialization on the other end.<p>[0]: <a href="https://3tilley.github.io/posts/simple-ipc-ping-pong/" rel="nofollow">https://3tilley.github.io/posts/simple-ipc-ping-pong/</a><p>[1]: <a href="https://github.com/grpc/grpc/issues/19959">https://github.com/grpc/grpc/issues/19959</a>
hardwaresofton: 最近在3tilly post[0]之后做了一些IPC实验,因为没有;没有足够的明确信息(即使它是时间上的快照)<p> 共享内存非常快;我很惊讶没有;没有更多的东西可以利用它。太奇怪了,gRPC没有;没有共享内存,而且基本上从未计划过?1.p> 尽管如此,我可以对这篇文章提出的建设性批评是,在像您的项目这样的大规模消费公告中,您应该:<p>-RPC吞吐量(通常有免责声明)-与另一种方法(例如域套接字)的比较(理想情况下绘制图表)-您最好的;最简洁;了解富有表现力的用法片段<p>100ns很好,但我真的很想知道有多少RPC;这意味着<i>没有进行数学运算,也没有在另一端进行现实的反序列化<p> [0]:<a href=“https:/;3tilley.github.io#x2F帖子G;简单的ipc乒乓球+;rel=“nofollow”>https:/;3tilley.github.io;帖子;简单的ipc乒乓球</a> <p>[1]:<a href=“https:/;github.com/&#grpc grpc";issues% 19959”>https:/;github.com;grpc/;grpc/;问题;19959</a>
emmanueloga_: Looks great! From a quick glance it seems like it is a cross platform shared memory library. Maybe similar to this? [1].<p>Suggestion: would be cool to have a quick description of the system calls involved for each supported platform [2]. I'm guessing mmap on linux/osx and CreateFileMapping on Windows?<p>--<p>1: <a href="https://github.com/LiveAsynchronousVisualizedArchitecture/simdb">https://github.com/LiveAsynchronousVisualizedArchitecture/si...</a><p>2: <a href="https://github.com/eclipse-iceoryx/iceoryx2?tab=readme-ov-file#supported-platforms">https://github.com/eclipse-iceoryx/iceoryx2?tab=readme-ov-fi...</a>
emmanueloga_: 看起来很棒!乍一看,它似乎是一个跨平台共享内存库。或许与此相似?1.p> 建议:快速描述每个支持平台所涉及的系统调用将很酷[2]。我;我猜测linux上的mmap;Windows上的osx和CreateFileMapping<p> --<p>1:<a href=“https:/;github.com/ LiveAsynchronousVisualizedArchitecture/-simdb”>https:/;github.com;LiveAsynchronousVisualizedArchitecture;si…</a><p>2:<a href=“https:/;github.com/ eclipse iceoryx iceoryx2?tab=readme ov file#支持的平台”>https:/;github.com;日食冰角;冰原2?tab=自述文件</a>
npalli: Congrats on the release.<p>What's the difference between iceoryx and iceoryx2? I don't want to use Rust and want to stick to C++ if possible.
npalli: 恭喜你获释<p> 什么;iceoryx和iceoryx2之间的区别是什么?我不知道;我不想使用Rust,如果可能的话,我想坚持使用C++。
westurner: How does this compare to and/or integrate with OTOH Apache Arrow which had "arrow plasma IPC" and is supported by pandas with dtype_backend="pyarrow", lancedb/lancedb, and Serde.rs? <a href="https://serde.rs/#data-formats" rel="nofollow">https://serde.rs/#data-formats</a>
westurner: 这与之相比如何;或者与OTOH Apache Arrow集成;箭头等离子体IPC”;并且由pandas支持,dtype_backend=“;“pyarrow”;,lancedb;lancedb和Serde.rs<a href=“https:#x2F;serde.rs#data format”rel=“nofollow”>https:/;serde.rs#数据格式</a>
****:
****: