ComLightInterop VS makepad

Compare ComLightInterop vs makepad and see what are their differences.

ComLightInterop

Cross-platform COM interop library for .NET Core 2.1 or newer (by Const-me)

makepad

Makepad is a creative software development platform for Rust that compiles to wasm/webGL, osx/metal, windows/dx11 linux/opengl (by makepad)
InfluxDB - Power Real-Time Data Analytics at Scale
Get real-time insights from all types of time series data with InfluxDB. Ingest, query, and analyze billions of data points in real-time with unbounded cardinality.
www.influxdata.com
featured
SaaSHub - Software Alternatives and Reviews
SaaSHub helps you find the best software and product alternatives
www.saashub.com
featured
ComLightInterop makepad
8 24
44 4,706
- 1.6%
4.2 9.9
6 months ago 3 days ago
C# Rust
MIT License MIT License
The number of mentions indicates the total number of mentions that we've tracked plus the number of user suggested alternatives.
Stars - the number of stars that a project has on GitHub. Growth - month over month growth in stars.
Activity is a relative number indicating how actively a project is being developed. Recent commits have higher weight than older ones.
For example, an activity of 9.0 indicates that a project is amongst the top 10% of the most actively developed projects that we are tracking.

ComLightInterop

Posts with mentions or reviews of ComLightInterop. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-07-18.
  • Swig – Connect C/C++ programs with high-level programming languages
    5 projects | news.ycombinator.com | 18 Jul 2023
    I have once made something remotely similar, to interop between C++ and C#: https://github.com/Const-me/ComLightInterop

    I took different approach. Because I only needed to support these two languages, there’s no separate interface definition language, and no code generator for interfaces. Instead, users are expected to write both language projections manually.

    Then there’s a runtime code generator on the .NET side of the interop which builds runtime callable proxy types for interfaces implemented in C++, also virtual tables for C# objects consumed by C++.

  • C# 11 Preview Updates – Raw string literals, UTF-8 and more
    5 projects | news.ycombinator.com | 22 May 2022
    It’s pretty fast. Likely reason for that, MS designed both language and runtime this way since version 1.0. They needed that for their Windows Forms which consumes huge chunk of WinAPI.

    I benchmarked a while ago when testing this library https://github.com/Const-me/ComLightInterop#performance On the computer I was using at that time (probably Ryzen 5 3600 CPU) the overhead was 15-20 nanoseconds per call.

  • Mach v0.1 – cross-platform Zig graphics in ~60 seconds
    4 projects | news.ycombinator.com | 27 Mar 2022
    That thing is COM, which is a small subset of C++ ABI. Technically it’s about the same as on Windows, i.e. C ABI with extra first argument for this pointer.

    Once upon a time I made this library https://github.com/const-me/comlightInterop/ The native side of the interop is idiomatic C++, here’s an example https://github.com/Const-me/ComLightInterop/blob/master/Demo... The C# side of the interop is implemented through the built-in C interop, here’s the relevant part of the library https://github.com/Const-me/ComLightInterop/blob/master/ComL... I’ve tested Linux version of that library on AMD64, ARMv7, and ARM64 CPUs, but only with gcc compiler on the native side.

  • COM+ Revisited
    2 projects | news.ycombinator.com | 30 Jan 2022
    I like many parts of COM, but I believe that example mostly demonstrates bad parts, with IDL, registrations, and over-engineered support libraries.

    There's nothing wrong with exporting factory functions from DLLs. Microsoft does it all the time, APIs like Direct3D, DirectDraw and Media Foundation don't come with type libraries are they aren't registered anywhere.

    Speaking about support libraries, I once made my own: https://github.com/Const-me/ComLightInterop/tree/master/ComL... Compare examples from that article with this one: https://github.com/Const-me/ComLightInterop/blob/master/Demo... That source file is the complete DLL which implements a minimalistic COM object.

  • The Serde Rust Framework
    14 projects | news.ycombinator.com | 14 Oct 2021
    > Does it feel "brittle" to use

    Yes and no.

    No because when you try to do unsupported things like calling a method on an object which doesn’t support one, you gonna get an appropriate runtime exception.

    Yes because if you fail lower-level things like local parameter allocation, you gonna get an appropriate runtime exception but that one is (1) too late, I’d prefer such things to be detected when you emit the code, not when trying to use the generated code (2) Lacks the context.

    Overall, when I can I’m using that higher-level System.Linq.Expressions for runtime codegen. Things are much nicer at that level. I only using the low-level thing when I need to emit new types, like there: https://github.com/Const-me/ComLightInterop/blob/master/ComL...

  • Weird
    5 projects | news.ycombinator.com | 28 Aug 2021
  • Building a shared vision for Async Rust
    4 projects | news.ycombinator.com | 18 Mar 2021
    > Do you have any good resources on writing dlls to consume via .net like you’re talking about?

    For C APIs i.e. functions, structures and strings, the good resource is Microsoft documentation, the support is built-in, see “Consuming Unmanaged DLL Functions” section: https://docs.microsoft.com/en-us/dotnet/framework/interop/

    For COM APIs i.e. sharing objects around see this library + demos: https://github.com/Const-me/ComLightInterop It’s only really needed on Linux because the desktop version of the framework has COM support already built-in, but it can be used for cross-platform things just fine, I tested that quite well i.e. not just with these simple demos.

    > How do you deal with the managed memory when using the gc from .net

    Most of the time, automatically.

    When you calling C++ from C#, the runtime automatically pins arguments like strings or arrays. Pinning means until the C++ function returns, .NET GC won’t touch these things. This doesn’t normally make any copies: C++ will receive raw pointers/native references to the .NET objects.

    Sometimes you do want to retain C# objects from C++ or vice versa i.e. keep them alive after the function/method returns. An idiomatic solution for these use cases is COM interop. IUnknown interface (a base interface for the rest of COM interfaces) allows to retain/release things across languages.

  • Experimental Nintendo Switch Emulator written in C#
    8 projects | news.ycombinator.com | 13 Mar 2021
    C++ interop is not supported in modern .NET out of the box, but wasn't too hard to implement as a library: https://github.com/Const-me/ComLightInterop

makepad

Posts with mentions or reviews of makepad. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2023-09-05.
  • WASM: Big Deal or Little Deal?
    5 projects | news.ycombinator.com | 5 Sep 2023
    It is what Makepad is working on in an interesting way using Wasm and Rust. They have created a Figma-like DSL and a good code separation with the logic behind it. You can edit UI's of in-production apps, and they are bundling an editor for that. Accessibility is an issue, and the project are looking to offer proper support there. In their video linked on the README they run the conference slides on Makepad with live apps embedded and running at 120 fps.

    https://github.com/makepad/makepad

    https://news.ycombinator.com/item?id=36567681

  • Snappy UIs with WebAssembly and Web Workers
    2 projects | news.ycombinator.com | 7 Aug 2023
    > if anyone tells you they need to use WebAssembly to make the UI snappy I'd advise you interrogate that assertion thoroughly.

    Get prepared to be blown away by Makepad [0]. I have no affiliation with them, but just watched their most recent conference presentation [1]. The slides were made with Makepad itself and included, embedded, a full-blown IDE, a synthesizer app, a Mandelbrod to zoom in endlessly, and more. All running at 120fps. The presentation is for the most part live-coding with this setup.

    What they want to do is bring coders and designers closer together, and while some code is in Rust they developed a DSL for the GUI parts that is close to how Figma works. These GUI's can run anywhere.

    And I couldn't help thinking "Why would people have complicated stacks to create Web 2.0 apps for the Google Web, when they have this?", in other words an opportunity to break out of the browser straitjacket.

    [0] https://github.com/makepad/makepad

    [1] https://www.youtube.com/watch?v=rC4FCS-oMpg

  • Makepad- Synthesizer Written in Rust
    3 projects | news.ycombinator.com | 3 Jul 2023
    For those who haven’t seen it, Makepad is also an in-browser code editor with an open-source UI toolkit. Looks like this synth is one of the examples of the UI toolkit.

    https://makepad.dev/

  • 50 Shades of Rust, or emerging Rust GUIs in a WASM world
    3 projects | /r/rust | 26 Apr 2023
    And I'm obsessed with what happens when you press Alt in their editor. I never knew I wanted this, but boy, do I want it.
  • Leveraging Rust and the GPU to render user interfaces at 120 FPS
    15 projects | news.ycombinator.com | 9 Mar 2023
    I tried this, using https://makepad.dev our GPU accelerated UI and renderstack. And unfortunately it wasn't a great experience. Text popping forward for whatever reason is not really an improvement (i tried indent depth, syntax highlighting reasons, cursor behavior). Maybe 'veeeeery' subtly could do something, but otherwise you dont want it to break visual symmetry as we are used to
  • Is the regex crate a bottleneck in your program? If so, can you share the details?
    6 projects | /r/rust | 24 Feb 2023
    Wow, so they did: https://github.com/makepad/makepad/pull/142
  • Ask HN: I just want to have fun programming again
    27 projects | news.ycombinator.com | 8 Feb 2023
    It says on the front page Mac and Web only

    https://github.com/makepad/makepad#prerequisites

    (windows and linux are coming )

  • Rust Web Framework Comparison
    4 projects | news.ycombinator.com | 29 Oct 2022
    We can! It’s a lot of work because you don’t have the whole JS ecosystem to fall back on, but to some that’s a feature not a bug.

    My favorite example of this is https://makepad.dev

  • Lapce release v0.0.12 open source code editor
    6 projects | /r/rust | 24 Mar 2022
    And a feature highlight of Code Lens. The idea is borrowed from https://github.com/makepad/makepad
  • Why Not Rust?
    4 projects | news.ycombinator.com | 18 Dec 2021
    When it comes to compile times, the most optimized Rust codebase I know for optimized for this is makepad.dev [1].

    It is compiling from scratch on mac m1 in around 7.5s [2] and that's +100k lines of Rust. However there is close to none dependencies, so this +100k is all there is to compile pretty much.

    [1] https://makepad.dev/

    [2] https://twitter.com/rikarends/status/1467529091284934666

What are some alternatives?

When comparing ComLightInterop and makepad you can also consider the following projects:

Ryujinx - Experimental Nintendo Switch Emulator written in C#

rust-gpu - 🐉 Making Rust a first-class language and ecosystem for GPU shaders 🚧

miniserde - Data structure serialization library with several opposite design goals from Serde

ProseMirror - The ProseMirror WYSIWYM editor

mach - zig game engine & graphics toolkit

Flutter - Flutter makes it easy and fast to build beautiful apps for mobile and beyond

sapio - A Bitcoin Programming Language

gallery - Flutter Gallery was a resource to help developers evaluate and use Flutter

pfr - std::tuple like methods for user defined types without any macro or boilerplate code

react-canvas - High performance <canvas> rendering for React components

mach-glfw-vulkan-example - mach-glfw Vulkan example

xi-editor - A modern editor with a backend written in Rust.