compiler-explorer VS QEMU

Compare compiler-explorer vs QEMU and see what are their differences.

compiler-explorer

Run compilers interactively from your web browser and interact with the assembly (by compiler-explorer)

QEMU

Official QEMU mirror. Please see https://www.qemu.org/contribute/ for how to submit changes to QEMU. Pull Requests are ignored. Please only use release tarballs from the QEMU website. (by qemu)
SurveyJS - Open-Source JSON Form Builder to Create Dynamic Forms Right in Your App
With SurveyJS form UI libraries, you can build and style forms in a fully-integrated drag & drop form builder, render them in your JS app, and store form submission data in any backend, inc. PHP, ASP.NET Core, and Node.js.
surveyjs.io
featured
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
compiler-explorer QEMU
191 190
15,198 9,277
1.5% 1.3%
9.9 10.0
about 19 hours ago 6 days ago
TypeScript C
BSD 2-clause "Simplified" License GNU General Public License v3.0 or later
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.

compiler-explorer

Posts with mentions or reviews of compiler-explorer. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-04-28.
  • What if null was an Object in Java?
    3 projects | news.ycombinator.com | 28 Apr 2024
    At least on android arm64, looks like a `dmb ishst` is emitted after the constructor, which allows future loads to not need an explicit barrier. Removing `final` from the field causes that barrier to not be emitted.

    https://godbolt.org/#g:!((g:!((g:!((h:codeEditor,i:(filename...

  • Ask HN: Which books/resources to understand modern Assembler?
    6 projects | news.ycombinator.com | 21 Apr 2024
  • 3rd Edition of Programming: Principles and Practice Using C++ by Stroustrup
    6 projects | news.ycombinator.com | 19 Apr 2024
    You said You won't get "extreme performance" from C++ because it is buried under the weight of decades of compatibility hacks.

    Now your whole comment is about vector behavior. You haven't talked about what 'decades of compatibility hacks' are holding back performance. Whatever behavior you want from a vector is not a language limitation.

    You could write your own vector and be done with it, although I'm still not sure what you mean, since once you reserve capacity a vector still doubles capacity when you overrun it. The reason this is never a performance obstacle is that if you're going to use more memory anyway, you reserve more up front. This is what any normal programmer does and they move on.

    Show what you mean here:

    https://godbolt.org/

    I've never used ISPC. It's somewhat interesting although since it's Intel focused of course it's not actually portable.

    I guess now the goal posts are shifting. First it was that "C++ as a language has performance limitations" now it's "rust has a vector that has a function I want and also I want SIMD stuff that doesn't exist. It does exist? not like that!"

    Try to stay on track. You said there were "decades of compatibility hacks" holding back C++ performance then you went down a rabbit hole that has nothing to do with supporting that.

  • C++ Insights – See your source code with the eyes of a compiler
    5 projects | news.ycombinator.com | 5 Apr 2024
    C++ Insights is available online at https://cppinsights.io/

    It is also available at a touch of a button within the most excellent https://godbolt.org/

    along side the button that takes your code sample to https://quick-bench.com/

    Those sites and https://cppreference.com/ are what I'm using constantly while coding.

    I recently discovered https://whitebox.systems/ It's a local app with a $69 one-time charge. And, it only really works with "C With Classes" style functions. But, it looks promising as another productivity boost.

  • Ask HN: How can I learn about performance optimization?
    6 projects | news.ycombinator.com | 2 Mar 2024
    [P&H RISC] https://www.google.com/books/edition/_/e8DvDwAAQBAJ

    Compiler Explorer by Matt Godbolt [Godbolt] can help better understand what code a compiler generates under different circumstances.

    [Godbolt] https://godbolt.org

    The official CPU architecture manuals from CPU vendors are surprisingly readable and information-rich. I only read the fragments that I need or that I am interested in and move on. Here is the Intel’s one [Intel]. I use the Combined Volume Set, which is a huge PDF comprising all the ten volumes. It is easier to search in when it’s all in one file. I can open several copies on different pages to make navigation easier.

    Intel also has a whole optimization reference manual [Intel] (scroll down, it’s all on the same page). The manual helps understand what exactly the CPU is doing.

    [Intel] https://www.intel.com/content/www/us/en/developer/articles/t...

    Personally, I believe in automated benchmarks that measure end-to-end what is actually important and notify you when a change impacts performance for the worse.

  • Managing mutable data in Elixir with Rust
    1 project | news.ycombinator.com | 16 Feb 2024
    Let's compile it with https://godbolt.org/, turn on some optimisations and inspect the IR (-O2 -emit-llvm). Copying out the part that corresponds to the while loop:

      4:
  • Free MIT Course: Performance Engineering of Software Systems
    4 projects | news.ycombinator.com | 10 Jan 2024
    resources were extra useful when building deeper intuitions about GPU performance for ML models at work and in graduate school.

    - CMU's "Deep Learning Systems" Course is hosted online and has YouTube lectures online. While not generally relevant to software performance, it is especially useful for engineers interested in building strong fundamentals that will serve them well when taking ML models into production environments: https://dlsyscourse.org/

    - Compiler Explorer is a tool that allows you easily input some code in and check how the assembly output maps to the source. I think this is exceptionally useful for beginner/intermediate programmers who are familiar with one compiled high-level language and have not been exposed to reading lots of assembly. It is also great for testing how different compiler flags affect assembly output. Many people used to coding in C and C++ probably know about this, but I still run into people who haven't so I share it whenever performance comes up: https://godbolt.org/

  • Verifying Rust Zeroize with Assembly...including portable SIMD
    1 project | dev.to | 10 Jan 2024
    To really understand what's going on here we can look at the compiled assembly code. I'm working on a Mac and can do this using the objdump tool. Compiler Explorer is also a handy tool but doesn't seem to support Arm assembly which is what Rust will use when compiling on Apple Silicon.
  • 4B If Statements
    5 projects | news.ycombinator.com | 27 Dec 2023
  • Operator precedence doubt
    1 project | /r/cprogramming | 11 Dec 2023
    Play around with it in godbolt if you're really curious: https://godbolt.org/

QEMU

Posts with mentions or reviews of QEMU. We have used some of these posts to build our list of alternatives and similar projects. The last one was on 2024-04-03.
  • QEMU Version 9.0.0 Released
    1 project | news.ycombinator.com | 24 Apr 2024
    My most-wanted QEMU feature: https://github.com/qemu/qemu/commit/a2260983c6553

    Using `gic-version=3` on macOS you can now use more than 8 cores on ARM chips.

  • Autoconf makes me think we stopped evolving too soon
    8 projects | news.ycombinator.com | 3 Apr 2024
    A better solution is just to write a plain ass shell script that tests if various C snippets compile.

    https://github.com/oilshell/oil/blob/master/configure

    https://github.com/oilshell/oil/blob/master/build/detect-pwe...

    Not an unholy mix of m4, shell, and C, all in the same file.

    ---

    These are the same style as a the configure scripts that Fabrice Bellard wrote for tcc and QEMU.

    They are plain ass shell scripts, because he actually understands the code he writes.

    https://github.com/qemu/qemu/blob/master/configure

    https://github.com/TinyCC/tinycc/blob/mob/configure

    OCaml’s configure script is also “normal”.

    You don’t have to copy and paste thousands of lines of GNU stuff that you don’t understand.

    (copy of lobste.rs comment)

  • WASM Instructions
    13 projects | news.ycombinator.com | 18 Feb 2024
    Related:

    A fast Pascal (Delphi) WebAssembly interpreter:

    https://github.com/marat1961/wasm

    WASM-4:

    https://github.com/aduros/wasm4

    Curated list of awesome things regarding WebAssembly (wasm) ecosystem:

    https://github.com/mbasso/awesome-wasm

    Also, it would be nice if there was a WASM (soft) CPU for QEMU, which (if it existed!) would go here:

    https://github.com/qemu/qemu/tree/master/target

  • Revng translates (i386, x86-64, MIPS, ARM, AArch64, s390x) binaries to LLVM IR
    7 projects | news.ycombinator.com | 12 Jan 2024
    > architectural registers are always updated

    In tiny code, the guest registers (global TCG variables) are stored in the host's registers until you either call an helper which can access the CPU state or you return (`git grep la_global_sync`). This is the reason why QEMU is not so terribly slow.

    But after a check, this also happens when you access the guest memory address space! https://github.com/qemu/qemu/blob/master/include/tcg/tcg-opc... (TCG_OPF_SIDE_EFFECTS is what matters)

    But still, in the end, it's the same problem. What QEMU does, can be done in LLVM too. You could probably be more efficient in LLVM by using the exception handling mechanism (invoke and friends) to only serialize back to memory when there's an actual exception, at the cost of higher register pressure. More or less what we do here: https://rev.ng/downloads/bar-2019-paper.pdf

  • State of x86-64 emulation of non-MacOS binaries
    1 project | /r/MacOS | 7 Dec 2023
    Um, in case you don't know, UTM (based on QEMU) is out for quite a while.
  • Multipass: Ubuntu Virtual Machines Made Easy
    3 projects | dev.to | 15 Nov 2023
    Some of these tools include Oracle VM VirtualBox (that I've used since before the acquisition of Sun Microsystems by Oracle), VMWare Workstation Player, and QEMU, but last year, I found out about Multipass.
  • Libsodium: A modern, portable, easy to use crypto library
    9 projects | news.ycombinator.com | 14 Sep 2023
    For C/C++ projects that use meson as the build system, there is an excellent way to manage dependencies:

    https://mesonbuild.com/Wrapdb-projects.html

    https://mesonbuild.com/Wrap-dependency-system-manual.html

    meson will download and build the libraries automatically and give you a variable which you pass as a regular dependency into the built target:

    https://github.com/qemu/qemu/tree/005ad32358f12fe9313a4a0191...

    https://github.com/harfbuzz/harfbuzz/tree/main/subprojects

    https://github.com/harfbuzz/harfbuzz/blob/37457412b3212463c5...

    Or, if you're using proper operating systems, they're managed by the usual package manager, just like everything else.

  • Top 6 Virtual Machine Software in 2023
    1 project | dev.to | 10 Aug 2023
    For all the users of the Linux platform, QEMU is the VM that you should go for. This software comes without any price tag and works as an emulator of various machines with utmost ease and completion; the software uses dynamic translations to emulate hardware peripherals and enhances its overall performance. If you are using QEMU as a virtualizer, then it will function exactly like the host system (provided you have the right set of hardware).
  • Show HN: I'm 17 and wrote this guide on how CPUs run programs
    5 projects | news.ycombinator.com | 9 Aug 2023
  • UTM for Developers
    2 projects | dev.to | 17 Jul 2023
    In this tutorial, we set up macOS and Windows virtual machines on UTM, a macOS application that provides a GUI wrapper for QEMU, a powerful open-source emulator and virtualizer. UTM allows you to easily manage and run virtual machines without memorizing complex commands. It also has special handling for macOS, making it simpler to install compared to other virtual machine software.

What are some alternatives?

When comparing compiler-explorer and QEMU you can also consider the following projects:

C++ Format - A modern formatting library

UTM - Virtual machines for iOS and macOS

rust - Empowering everyone to build reliable and efficient software.

TermuxArch - Experience the pleasure of the Linux command prompt in Android, Chromebook, Fire OS and Windows on smartphone, smartTV, tablet and wearable https://termuxarch.github.io/TermuxArch/

format-benchmark - A collection of formatting benchmarks

Unicorn Engine - Unicorn CPU emulator framework (ARM, AArch64, M68K, Mips, Sparc, PowerPC, RiscV, S390x, TriCore, X86)

papers - ISO/IEC JTC1 SC22 WG21 paper scheduling and management

Vagrant - Vagrant is a tool for building and distributing development environments.

rustc_codegen_gcc - libgccjit AOT codegen for rustc

xemu - Original Xbox Emulator for Windows, macOS, and Linux (Active Development)

firejail - Linux namespaces and seccomp-bpf sandbox

em-dosbox - An Emscripten port of DOSBox