Commit Graph

126 Commits

Author SHA1 Message Date
Sean Garwood
a9d2910c52 Warn when assembly output is in AT&T syntax (#4311) (#8272)
Assembly documentation tooltips always display Intel syntax information,
but when the actual assembly output is in AT&T syntax, this can be
confusing due to the reversed operand order (AT&T uses source, dest
while Intel uses dest, source).

This change adds a warning to the tooltip when the assembly output is
NOT in Intel syntax, informing users that the documentation pertains to
Intel syntax.

The warning appears when:
- The user has not enabled the Intel syntax filter (filters.intel is
false)
- The assembly output is therefore in AT&T syntax

The detection uses filters.isSet('intel') rather than compiler.intelAsm,
ensuring we check the actual output syntax (what the user selected)
rather than just whether the compiler supports Intel syntax.

Fixes #4311

refactor: move assembly-syntax type to frontend, remove from device-view

Move types/assembly-syntax.ts to static/assembly-syntax.ts since it's
only used by frontend code (compiler.ts and device-view.ts), not
backend.

Per CONTRIBUTING.md, types/ directory is for shared types used by both
frontend (static/) and backend (lib/). Since AssemblySyntax is
frontend-only, it belongs in static/.

Also removed syntax tracking from device-view entirely:
- Device assembly (CUDA PTX, GPU, etc.) doesn't have Intel/AT&T variants
- device-view was storing syntax as immutable state that never updated
- This would cause incorrect tooltips if user toggled syntax after
opening
- Reverted device-view to match main branch (no syntax support)

Changes:
- Moved types/assembly-syntax.ts -> static/assembly-syntax.ts
- Updated import paths in compiler.ts
- Removed syntax field and imports from device-view.ts/.interfaces.ts

This means no unit tests are required per CONTRIBUTING.md guidelines
(tests only required for server-side components in lib/).

<!-- THIS COMMENT IS INVISIBLE IN THE FINAL PR, BUT FEEL FREE TO REMOVE
IT
Thanks for taking the time to improve CE. We really appreciate it.
Before opening the PR, please make sure that the tests & linter pass
their checks,
  by running `make check`.
In the best case scenario, you are also adding tests to back up your
changes,
  but don't sweat it if you don't. We can discuss them at a later date.
Feel free to append your name to the CONTRIBUTORS.md file
Thanks again, we really appreciate this!
-->
2025-12-22 19:23:59 -06:00
Josh Brice
2fe4d972d1 Hide Intel ASM syntax option for non-ASM languages (fixes #8279) (#8280) 2025-12-09 17:54:09 -06:00
Oguz Ulgen
f7bc52a923 Add Helion language support (#8206)
Helion is a Python-embedded domain-specific language (DSL) for authoring
machine learning kernels, designed to compile down to Triton.

https://github.com/pytorch/helion

I mostly followed the Triton example, please let me know if there's more
I need to do or anything I missed.

infra PR: https://github.com/compiler-explorer/infra/pull/1875
2025-11-04 12:08:20 -06:00
Matt Godbolt
8d43a146ac Add TheFusedKernelLibrary as a CUDA library (#8247)
Adds TheFusedKernelLibrary Beta-0.1.9 support for both C++ and CUDA
compilers.

This PR supersedes #8035 (cherry-picked and rebased to resolve conflicts
with main).

Original contribution by @morousg - thank you!

## Changes
- Added TheFusedKernelLibrary Beta-0.1.9 for C++ compilers
- Added TheFusedKernelLibrary Beta-0.1.9 for CUDA compilers
- Added contributor to CONTRIBUTORS.md
- Library placed in correct alphabetic order in libs list

Co-authored-by: Oscar Amoros Huguet <morousg@users.noreply.github.com>
2025-11-04 12:07:49 -06:00
Frank Leon Rose
b9dc265973 Clojure language support (#8146)
<img width="1405" height="474" alt="Clojure in Compiler Explorer 2"
src="https://github.com/user-attachments/assets/76dfed9b-d0eb-4764-b371-9c6023088a50"
/>

With Macro Expansion:
<img width="1642" height="594" alt="image"
src="https://github.com/user-attachments/assets/8b511af9-3617-426e-868d-5a99e5db5756"
/>

TODO
- [x] Language configuration
- [x] Compile via wrapper
  - Inject namespace if necessary to simplify minimal code sample
  - Parse Unix style command line parameters into compiler bindings
  - Place file in path according to namespace
- [x] Install some versions of Clojure [PR
here](https://github.com/compiler-explorer/infra/pull/1849)
- [x] Macroexpansion view (modeled on Rust macro expansion view)
- [x] Filter out command line options that would break wrapper operation
- [x] ~~Parse `--help` output to a list of options~~ Reverted because
not applicable.
- [x] Short form compiler options
- [x] Support Clojure compiler settings via env var, like
`JAVA_OPTS=-Dclojure.compiler.direct-linking=true
-Dclojure.compiler.elide-meta=[:doc,:file]`

NOT DOING
- [x] ~~Support loading dependencies~~ Non-trivial enhancement. Not
necessary for initial release.

---------

Co-authored-by: Matt Godbolt <matt@godbolt.org>
2025-10-22 09:04:20 -05:00
LJ
066a942cbc Add Resolc 0.4.0 compiler for Solidity and Yul (#8164)
## What

Adds [Revive's Resolc](https://github.com/paritytech/revive) compiler
for compiling Solidity and Yul (Solidity IR) to RISC-V and PolkaVM
assembly.

### Main Additions

- [x] Implement new `ResolcCompiler`
- [x] Implement Yul language definition and config for Monaco
- [x] Add Resolc as a compiler for the Solidity and Yul languages
  - The `ResolcCompiler` handles both kinds of language input 
- [x] Implement initial `PolkaVMAsmParser` (no source mappings)
- [x] Enable viewing LLVM IR in a supplementary view
- [x] Implement a new LLVM IR backend option for toggling between
optimized and unoptimized ll
- Affects non-resolc files ([see
commit](606bab9a59))
  - Disabled by default
- (Enable by setting `this.compiler.supportsIrViewOptToggleOption =
true` in a compiler's constructor)
- The compiler's `getIrOutputFilename()` will receive the LLVM IR
backend options

### CE Infra

Accompanying CE Infra PR:
https://github.com/compiler-explorer/infra/pull/1855

## Overall Usage

### Steps

(See screenshots)

* Choose between two input languages:
  * Solidity
  * Yul (Solidity IR)
* Choose a Resolc compiler
* View assembly:
  * PolkaVM assembly (if enabling "Compile to binary")
  * RISC-V (64 bits) assembly
* View intermediate results:
  * Optimized LLVM IR (if enabling "Show Optimized" in the LLVM IR view)
  * Unoptimized LLVM IR

### Notes

Source mappings currently only exist between:
- Yul and RISC-V
- Yul and LLVM-IR

## Screenshots

<img width="1502" height="903" alt="CE Yul RISC-V LLVM IR"
src="https://github.com/user-attachments/assets/7503b9b5-0f2c-4ddf-9405-669e4bdcd02d"
/>

<img width="1502" height="903" alt="CE Solidity PolkaVM"
src="https://github.com/user-attachments/assets/eeb51c99-3eaa-4dda-b13c-ac7783e66cb8"
/>

---------

Co-authored-by: Matt Godbolt <matt@godbolt.org>
2025-10-14 13:56:59 -05:00
Nathan S.
822292e4ea Add support for Swift LLVM IR (#8180)
This adds support for the LLVM IR view for Swift, based on what other
LLVM based compilers do.

I tested it on my machine and it seems to work well, including with the
demangler. I'm not sure what `minIrArgs` is though, I added it because
it was there for other languages.

Co-authored-by: Nathan SALAUN <nathan.salaun@sofia.dev>
2025-10-13 14:20:25 -05:00
Alex Trotta
c10fa9b300 Add Mojo 25.6 (#8045)
Adding the latest stable version here. 
---------

Co-authored-by: Matt Godbolt <matt@godbolt.org>
2025-09-22 20:00:16 -05:00
Trevor Gross
f213d55c80 Add MinGW GCC 14.3 and 15.2 (#8089)
Requires: https://github.com/compiler-explorer/infra/pull/1816
Closes:
https://github.com/compiler-explorer/compiler-explorer/issues/8088
2025-09-12 15:20:15 -05:00
flofriday
c88fe255f8 Add Kotlin 2.2.0 and 2.2.10 (#8052) 2025-08-25 21:22:51 -05:00
Alfredo Correa
399a72a773 Add bmpi3 (#7735)
Proposing to add the B-MPI3 library to the live site.
https://gitlab.com/correaa/boost-mpi3

Followed the steps as best as I could in based on other gitlab type
libraries (bmulti)

Feedback on improving the hooks and the organizations of files in the
repository is welcome.
The goal is to include the library by doing
#include<mpi3/communicator.hpp>.
2025-05-30 09:26:45 -05:00
Rob Parolin
a0b48fb7e0 Add Mojo compiler (#7692)
This PR adds support for the Mojo programming language.

Explicitly tested viewing the generated assembly, LLVM IR, and running
the generated executable.
2025-05-21 13:53:05 -05:00
许荣东
ae83e50777 Add RapidJSON C++ library (#7530)
related issue:
https://github.com/compiler-explorer/compiler-explorer/issues/6942

Co-authored-by: Matt Godbolt <matt@godbolt.org>
2025-04-22 13:58:53 -05:00
Adrien Bertrand
9e7808b13c Add (e)z80-clang compilers. (#7546)
These clang + LLVM backends are not upstreamed but [a community
effort](https://github.com/CE-Programming/llvm-project/), so it's a bit
customized.

This requires https://github.com/compiler-explorer/infra/pull/1566

_Edit: tested locally, works fine._
2025-04-14 15:17:39 -05:00
mathiasgredal
f775802ebf add jdk24.0.0 (#7524)
Support JDK24 GA

Related PR: https://github.com/compiler-explorer/infra/pull/1557

---------

Co-authored-by: Mats Jun Larsen <mats@jun.codes>
2025-03-27 02:20:28 +00:00
Dana Jansens
a95d35c64b Put the carbon toolchain in the carbon.defaults properties (#7495)
This allows using the carbon toolchain as the default Carbon compiler
when working in a local development environment.
2025-03-12 16:09:15 +01:00
Joshua Batty
b272efdb53 Add sway compiler (#7409)
Should be pretty self explanatory. I've added a corresponding PR to the
infra repo [here](https://github.com/compiler-explorer/infra/pull/1532)

Please let me know if there is anything I've done incorrectly here!
Thanks

---------

Co-authored-by: Matt Godbolt <matt@godbolt.org>
2025-02-24 09:38:13 -06:00
Vipul Cariappa
481ec4c264 update clad to v1.9 with clang v19.1.0 (#7394) 2025-02-19 09:31:39 -06:00
Stephen Heumann
5a72fa0659 Add support for ORCA/C (#7368)
[ORCA/C](https://github.com/byteworksinc/ORCA-C) is a C compiler that
natively runs on and targets the Apple IIGS. ORCA/C and the programs it
generates can be run on modern Linux systems by using an emulation tool
called [Golden Gate](https://goldengate.gitlab.io).

This adds support for ORCA/C (run via Golden Gate) in Compiler Explorer.
It uses its own assembly format and objdumper (provided by Golden Gate),
so support for those is added. An extra configuration option was also
added to support execution via an emulator, bypassing the usual check
that executables can run natively. Asm docs for the WDC 65C816 processor
were also added.

ORCA/C and Golden Gate are not Free Software, but their rights holders
have given permission for them to be used on Compiler Explorer. Tarballs
for them can be supplied privately. See infra PR:
compiler-explorer/infra#1521

---------

Co-authored-by: Matt Godbolt <matt@godbolt.org>
2025-02-18 10:28:10 -06:00
Niles Salter
bbdad0fe8e [Zig] Fix target/arch parsing so assembly docs query the correct ISA (#7363) 2025-02-16 01:18:18 +01:00
Waqar Ahmed
d3ef2de208 Add Odin language (#7186) 2024-12-06 17:28:47 +01:00
James Touton
287b2e4564 Added p2998 (#7175)
See:

* https://github.com/compiler-explorer/clang-builder/pull/77
* https://github.com/compiler-explorer/compiler-workflows/pull/30
* https://github.com/compiler-explorer/infra/pull/1472
2024-12-04 04:18:17 -06:00
Ofek Shilon
fcbfe383c8 Remove myself from contributors 2024-11-15 00:56:44 +02:00
goto40
03ce528a0a feat: added ability to receive a base64 with compressed clientstate, #6918 (#6919)
I encountered a problem with large URLs when using the "clientstate" API
with base64 strings: see #6918

* I found that it was quite easy to include this feature, just by
searching for `/clientstate/`.
* I "tested" my feature interactively with `npm run dev` and this
[link](http://localhost:10240/zclientstate/eNq1VduK2zAQ/ZXBhWITJc6lVye7sBT6uIWl9CUOiyJPYm1syUjyZsOSf+/Idm5tWuhD7YCs0cyZM5doXgOL1kqtbJDA/DWQGa0jBkHB1brma6RtIHq9gERW10Y0glTFMYiqMrhCg0pgArlzlU3iGNXg/GAgdBlvYxLFQivHpUITl5mtuErVG6lEUWcIM6mtM8jL23PhAdLw7WAtXV4va4vGw6ByDfBGbzbadnixlWpdYD9Hnh2dDPKqIlDFS6StQLAuwxe48es0Vf51WFYFdzgTBbcW7m6BgpNrpQ2Cy6WFNDiopAHkFBeDlTZ0hlDqkrik6lnLDCojlRtnITG0Du7e8ghegR6Cu/KEN1ztwO0qhLsoVV5EqCFBgCR+wyktM+ADfPHhhsNoCr2eJMhW91z/qdV/OtcfNfpPF/r+obiTROjawYy0Q8lIhb4osjSYeqpfer3xJAE+p6PFyXZ/+ryASIOUkhhM22PS2v8WKYHeawc211uVwE7XILgCX0ejC9jmUuSQyRIo1dmOKiXFJeUjClfZb+ZNFbDUZgcF33lS4ddvD98f7u7jL5RWn56Sui48JsJLMu74fHHzOmJjNmHv2Hv2gX1kn9jnfRcHr50G3rYJviRJ20yhtyODSdRkKke5zh2Drcxc3todWoBHTXN1vG299OaWwXxldAmDwQCcjs5ckcbo5I12nUPOOtGqLorHtrSsyX/JN/hYcWnCIYNR1DKyWKBwYPQWhlSZecKGyWhBJVJX6tbv989Ld6DuqUTTS27jP3K7JDKKfpXRVTK5JEe0iBQbJZN/Jzb2xPY+s4RnkP6TApsOKOheoTq4nMyPtaM0U1vzpX5uz5LG7HppZ7JNrJe0abaN6KDVNeahBNfFtweEthMfC1y52783zb8TmtDvV0fGY7ae/qOXUzhXnPgBQVdyJQs0zSxZkABfUJBf0w2XwzntukkTCD9nHp2p1cYjFHJ5NNaV6+ZS0CciNzSFxsNgf+bnW+2q2v2QVi4LP5cIBvcLen8CkW8rEQ==).

I have no insights in the underlying architecture, but I already have
**some comments on my PR** (and I am willing to work on these, if I get
some feedback/hints):

* the **decompression happens synchronously** (`zlib.inflateSync`). This
can be changed easily, once I understand how async operations are done
for the compiler explorer software.
* the link is `/zclientstate/` (in addition to `/clientstate/`) - I am
open for alternatives...
* I have **not added automated tests** (could be done, give me a
hint/example)

The modified SW worked for me! I hope to get some feedback... **This
would enable larger code-examples to be sent via clientstate as before
with smaller URLs**.
2024-10-02 07:58:51 -05:00
Detjon Mataj
53c04b26af Add bloaty tool for C, C++, D, Rust and Pascal (#6790)
Added `bloaty` tool configuration for C, C++, D, Rust and Pascal. 

resolve #6240
2024-08-24 15:01:26 -05:00
Nicholas Hubbard
a9257430f3 Add assembly documentation for PowerPC platform (#6665)
<!-- THIS COMMENT IS INVISIBLE IN THE FINAL PR, BUT FEEL FREE TO REMOVE
IT
Thanks for taking the time to improve CE. We really appreciate it.
Before opening the PR, please make sure that the tests & linter pass
their checks,
  by running `make check`.
In the best case scenario, you are also adding tests to back up your
changes,
  but don't sweat it if you don't. We can discuss them at a later date.
Feel free to append your name to the CONTRIBUTORS.md file
Thanks again, we really appreciate this!
-->

Hello all, I've added assembly documentation for the PowerPC platform
with this PR.

There's a couple of notes to keep in mind, mostly regarding automatic
processing:

1. Unfortunately, IBM made their documentation site very difficult to
automatically scrape. It uses dynamic rendering with a documentation API
that's protected by cookies, requiring the use of Selenium to scrape it.
2. While it is possible to scrape the documentation pages, it's
maddeningly difficult to do so, because the structure of the pages is
not guaranteed.
- Some pages have invisible elements in their headers that make matching
elements very difficult.
     - Some pages are missing entire sections.
- Some pages are written without an introduction for the instruction
mnemonic, making the resulting documentation impossible to understand.
- Some pages, specifically for instructions without arguments, are
missing the table that lists the mnemonics out in order.
- I could go on, but I abandoned trying to do automatic processing after
running into this many roadblocks.
3. The automatic processing script is available in the docenizers
directory, but since it's not complete, feel free to ask to remove it.
4. I couldn't test the actual mnemonics appearing the editor, because my
local test setup kept trying to map the PowerPC instructions into AMD64
documentation, with predictably unusual results.
5. I didn't include AltiVec instructions, because there isn't any
webpage that documents them; they are only documented in a PDF file
provided by NXP.

Please let me know if there's anything else I need to do for this to
work. Thank you so much for your wonderful service!
2024-07-01 14:52:10 +02:00
Nazım Can Altınova
d8371ca866 Add the "nix" Rust crate (#6472)
This PR fixes #6212 and infra PR is here:
https://github.com/compiler-explorer/infra/pull/1299

It adds the nix crate that will be useful when users need to access more
user friendly *nix APIs.
Thanks!
2024-05-13 20:30:31 -05:00
Adam Thibert
e630346d2e Add the phf crate for Rust (#6375) 2024-04-19 23:02:03 +02:00
Matthew Guidry
102b253f57 Add one dark theme (#6324)
Adds a new theme based on the One Dark theme from the Atom text editor.
Adds a new line highlighting theme "Soft Dark Rainbow" that works better
with the One Dark theme.
2024-04-06 23:30:39 -05:00
Khyber Sen
b7e2e5c3c3 Add zerocopy crate (#6284) 2024-03-26 00:52:09 +01:00
Andrea Tomasi
4d39fdddb8 View Erlang jitted assembly (#6104)
Hi, this PR adds a way to view the assemply code of Erlang code.

Since OTP 24 inside the Erlang VM there is a jitter that runs while we
load the code.

The standard way to dump the asm code is to pass an option during the
startup. The main issue is that this triggers the dump of all the
modules we are loading (and it is slow).
To avoid this I'm using some instrinsics of OTP 26 but at least we dump
only what we need.

(I'm planning to add it to `infra` and then to awmason

Some references:
-
https://www.erlang.org/blog/otp-26-highlights/#improvements-in-the-erlang-compiler-and-jit
-
https://github.com/erlang/otp/blob/master/erts/emulator/beam/erl_bif_info.c#L5255

---------

Co-authored-by: Matt Godbolt <matt@godbolt.org>
2024-02-12 21:49:03 -06:00
Julian
99559780bf Add UPMEM's DPU clang (#5950) 2024-01-20 18:05:14 +01:00
Anirudh Sundar Subramaniam
c3f8f8665b Handle ir and machine functions separately in OptPipeline (#5902)
This patch makes a small change in how functions are handled while
parsing LLVM opt pipeline output. Specifically, it differentiates
between IR function and machine function, and while checking for the
close of function, it only checks if the corresponding function is open.

This was needed because in some targets like hexagon, the machine
functions could contain `BUNDLE`s as part of the dump and `BUNDLE`s are
also represented with opening and closing braces ({}). This was causing
assertion because the close brace for a BUNDLE was considered to be a IR
function close statement.
2024-01-08 15:32:45 -06:00
Weile
5bcfd84bac Add taskflow (#5790)
Adds [taskflow](https://github.com/taskflow/taskflow) as a C++ library.

Related PR: https://github.com/compiler-explorer/infra/pull/1164

Note:
taskflow is a General-purpose Parallel and Heterogeneous Task
Programming System.

taskflow helps users quickly write parallel and heterogeneous task
programs in modern C++.

taskflow has been widely used in many companies and academic institutes,
like Cruise, Nvidia, AMD, NSF, etc.

taskflow has appeared in various C++ conferences, including
[CppCon'20](https://www.youtube.com/watch?v=MX15huP5DsM) and
[MUC++](https://www.youtube.com/watch?v=u8Mc_WgGwVY)
2023-11-22 18:08:11 -06:00
Andrew Brey
26ab4e6d4b feat(devcontainers): add the ability to use GitHub Codespaces and VS Code remote containers (#5631) 2023-10-22 12:13:26 +02:00
Rupert Tombs
83e06b0424 Update .js to .ts in documentation (#5558)
While reading the (excellent) documentation here, I noticed a few stale
references to `.js` files that are now implemented in TypeScript.

* Update `*.js` to `*.ts` in Markdown documentation.

* Update `app.js` to `out/dist/app.js` in
`docs/SystemdSocketActivation.md`.
_I managed to follow these instructions and locally run Compiler
Explorer through socket activation after that change._

* Update `*.js` to `*.ts` in the GitHub labeller config
`.github/labeler.yml`.
_Also correct some misnamed files here. I have checked the new version
with `ls $(grep -E "^ - " .github/labeler.yml | sed "s/ - //g")`. If I
were more familiar here, I would have liked to add a similar check to
the automated tests._

- Sheepishly add myself to the contributors list, despite this being a
tiny find-and-replace change.

---------

Co-authored-by: Jeremy Rifkin <51220084+jeremy-rifkin@users.noreply.github.com>
2023-10-04 20:27:06 -04:00
Guo Ci
51f59d1564 add name to CONTRIBUTORS.md (#5537) 2023-09-30 21:13:19 +02:00
AliG
1efe5a3eaf Add ForCompile project to API.md. (#5516) (#5522)
ForCompile - A Fortran library to access the API

by @gha3mi.
2023-09-26 07:07:32 -05:00
Marc Auberer
fb26b2d9a1 Update checkout action to v4 (#5479)
Upgrade checkout action to v4 to make use of Node 20.
Node 16, which v3 is using, reaches end of life on 2023-09-11.
2023-09-16 17:13:45 -05:00
Spydr
0bf769e245 New Language: V (#5297)
V (`vlang`) is a simple, fast and safe general purpose programming
language compiling to human-readable C.

#### Key features of V:

- simplicity, "only one way to do things"
- performance as fast as C
- safety: no null, no globals, no undefined behavior, immutability
- automatic C to V translation, good C interoperability
- hot code reloading
- flexible memory management (GC by default, manual, arena allocation,
autofree)
- other compilation backends like JavaScript, `native` (wip), `wasm`
(wip) or interpreted

#### Links:

Source code: https://github.com/vlang/v
Official website: https://vlang.io
Web playground: https://play.vlang.io/

infra PR: https://github.com/compiler-explorer/infra/pull/1058

#### Things this PR adds:

- General support for V
- Code inspection for the C, Go and JavaScript backends
- Support for the v formatter `v fmt`
- Some V example code

#### Things not implemented:

- Support for binary-output backends like `native` and `wasm`
- Support for running programs

<!-- THIS COMMENT IS INVISIBLE IN THE FINAL PR, BUT FEEL FREE TO REMOVE
IT
Thanks for taking the time to improve CE. We really appreciate it.
Before opening the PR, please make sure that the tests & linter pass
their checks,
  by running `make check`.
In the best case scenario, you are also adding tests to back up your
changes,
  but don't sweat it if you don't. We can discuss them at a later date.
Feel free to append your name to the CONTRIBUTORS.md file
Thanks again, we really appreciate this!
-->

---------

Co-authored-by: Matt Godbolt <matt@godbolt.org>
2023-08-15 22:16:36 -05:00
Simon Sobisch
a4246b3814 cobol: GnuCOBOL 3.2 (#5379)
infra PR at https://github.com/compiler-explorer/infra/pull/1071
2023-08-14 22:33:42 -05:00
Jorge Lopez
a90dfab5f5 Add a line break before kill (#5258)
A fix for
https://github.com/compiler-explorer/compiler-explorer/issues/5233
2023-07-15 10:37:01 -05:00
Mauro Baladés
a33dd9de16 Added snowball lang (#5245)
# Language name
Snowball 🐱 

Language version
Snowball v0.0.7-beta

## Language homepage
Soon™️ 

Not the websites but some (WIP) documentation:
https://snowball-lang.gitbook.io/docs/

Compiler homepage

https://github.com/snowball-lang/snowball

Compiler version
v0.0.7-beta

Motivation

With a myriad of features to offer, Snowball boasts object-oriented
programming, memory safety, built-in functions for enhanced
productivity, and faster execution than other languages. Plus, its
garbage collector and unit testing make it a comprehensive tool for
developers.

> It's still in development but it's development is fast
2023-07-10 20:38:55 -05:00
Vlad Serebrennikov
36b8b6c227 Add -gcc-toolchain option for Clang 3.1, 3.2, and 3.3 (#5104)
This patch specifies path to GCC toolchain for those ancient Clang
versions. Ancient Clang versions are still very useful when revisiting
equally ancient bug reports, or figuring out when an ancient C or C++
defect report was implemented.

Note that modern spelling of this option is `--gcc-toolchain=`, which is
used for Clang 3.4 onwards, but those ancient versions has it in a
slightly different form.

Co-authored-by: Vlad Serebrennikov <serebrennnikov.vladislav@gmail.com>
2023-06-05 20:28:52 -05:00
aliaegik
91334b9d9b New Language: C3 (#5086)
Related to: https://github.com/compiler-explorer/infra/pull/1017

C3 is a system programming language based on C. It is an evolution of C
enabling the same paradigms and retaining the same syntax as far as
possible.

Design Principles:
Procedural "get things done"-type of language.
Try to stay close to C - only change what's really necessary.
C ABI compatibility and excellent C integration.
Learning C3 should be easy for a C programmer.
Data is inert.
Avoid "big ideas" & the "more is better" fallacy.
Introduce some higher level conveniences where the value is great.

You can try it out live on its tutorial website:
https://www.learn-c3.org
Source code: https://github.com/c3lang/c3c

---------

Co-authored-by: Rubén Rincón Blanco <git@rinconblanco.es>
2023-06-02 08:08:57 -05:00
Johel Ernesto Guerrero Peña
c76b16ef69 lang(cpp2): improve highlighting (#5027) 2023-05-09 19:18:57 +02:00
Mohammed Keyvanzadeh
abf92f10f6 tools: update GitHub Actions workflows (#4943)
- Update the actions in the GitHub Actions workflows to their latest versions.
- Run the workflows on the latest versions of the platforms where appropriate.
- Set the `check-latest` field of the `actions/setup-node` action to `true` to use the latest release of the specified Node.js version instead of using the cached one when there's a new release available.
- Explicitly specify the action versions instead of using the `latest` tag.
2023-04-05 11:24:31 -05:00
Madhur Chauhan
a45ea37c75 update pahole name (#4441)
* update pahole name
2022-12-15 16:11:23 -06:00
Sebastian Büttner
fef60ac025 Add missing data definition directives (fixes #4275) (#4277) 2022-11-12 09:04:38 +01:00
Cory Bloor
e670523ddd Add ROCm Clang and HIP to CUDA (#4097)
* Add ROCm Clang and HIP to CUDA

* Always include hip/hip_runtime.h

The need to include <hip/hip_runtime.h> and/or <hip/hip_runtime_api.h>
in HIP code before using HIP features is one big difference between
HIP and CUDA. Manually adding it to the command-line here is not ideal,
but the alternative is that the CUDA sample code will be broken by
default when a HIP compiler is selected.

This is perhaps an argument for making HIP a separate language in
compiler explorer, but there's pros and cons to both approaches. I'm
not sure which approach is best, but the existing HIP support that I
built upon was based on using CUDA as the language.

* Add hip-amd to CUDA libs

* Fix id collsion and drop --offload-arch

* Drop trunk compilers

The nightly builds of ROCm Clang and vanilla Clang lack both device
libraries and the HIP library. Their ability to compile HIP code is
very limited without those, to the extent that they will not be able
to build the example code without changes.

I suspect that it's possible to fix those issues, but it may be less
confusing to drop them from the compiler list until they are fully
functional.

* Add self to CONTRIBUTORS.md

* Restore hiptrunk compiler

Put the hiptrunk compiler back how it was, so that the addition of the
HIP libraries is a purely additive change in functionality. However,
mark hiptrunk as hidden so that it is not visible by default.

Co-authored-by: Patrick Quist <partouf@gmail.com>
2022-10-10 21:09:27 -05:00