* Switch to subprocess.run for timeouts
* [experiment] Set CI TIMEOUT_SCALE_FACTOR to 1
* supress parameterized.expand error in event of no compilers, change TIMEOUT_SCALE_FACTOR in CI to 2
* Exempt dummy compilers from nsjail bind mounts, disable nsjail time limits
* Don't run timeout test on windows
* Decouple test_compiler_timeout's timeout from global timeout settings, reset TIMEOUT_SCALE_FACTOR to 10
* Have DummyLongRunningCompiler subclass DummyCompiler
* Have a timeout of zero disable timeouts entirely
* Skip test_zero_timeout on windows
* black
Co-authored-by: ConorBobbleHat <c.github@firstpartners.net>
* Force exception_on_timeout to use spawn to make gunicorn happy
* black
* Have test_fpr_reg_names_output and test_giant_compilation test for success as opposed to a lack of output
* Refactor timeouts for:
- compiling
- decompiling
- assembling
- disassembling
* Move m2c timeout wrapper to prevent interfering with StringIO
* Increase default timeouts by an order of magnitude to investigate failing CI tests
* Add timeout scale factor, have CI timeouts be 10x default
Co-authored-by: ConorBobbleHat <c.github@firstpartners.net>
* A few things:
Make logs more brief by hiding the PATH from compile commands
Hopefully prevent the frontend server from making tons of anonymous profiles
Add a scroll bar to the problems window
Restore the old look of ScoreBadge
* black
* GhostButton: don't use <button> if not clickable
* change matched score text to "MATCH"
* add family tab to scratch editor
* use '?' for null userlinks
* fix issue where matched functions are sorted to the bottom of the list instead of the top
* fix loading spinner size
* grey out scratches worse than current
* show raw score value on hover only
The default behavior of <form> when there is a <button> inside (through AsyncButon) is for the form to be submitted, and as we provided no override it effectively just refreshed the page. This aborts the actual new scratch creation request!
- Use Next.js 13 app directory for all routes except projects
- Add Tailwind (resolves#619) and use it for most components
- New footer
- Adjust navbar (logotype, buttons moved to right)
- Improve the styling of the search box
- New /settings/account page
- /credits grabs contributors list for this repo from GitHub's API
- Resolve #634
- New welcome page header with scrolling platform icons
As this title suggests, this PR caps the runtime for all compiler / m2c
calls. Currently, the timeout is five seconds for both.
There may well be a better place to put the compile timeout; as ever,
happy to change :)
Co-authored-by: ConorBobbleHat <ConorBobbleHat>
This PR adds a preset for Luigi's Mansion. However, I am babby, so the
compiler options included are the bare minimum used while matching
isolated functions. They will probably need to be updated once the full
pool of options is found.
Adds a new checkbox for disabling pseudo instructions on MIPS scratches
by passing the `-Mno-aliases` flag to `objdump`. This is disabled by
default.

### Why is this useful?
Because GAS likes using the same pseudo instruction for multiple
instructions, which sometimes leads to confusion of "why this doesn't
match if it is the same instruction". Complains about this usually
happen with the `li` pseudo instruction.
Example ("both are `li`s, why it doesn't match?!?!?"):

Disabling pseudos ("oh, they actually are different instructions"):

### Disadvantages
Some pseudos are clearer as pseudos than their actual raw instruction;
like for example the `nop`, which gets disassembled as `sll, zero, zero,
0x0`. `move` is also an example of this (even if the underlying
instruction changes depending on the assembler).
There doesn't seem to be any option in `objdump` to only allow some
pseudos.
`asm-differ` seems to have custom logic for handling `nop`s which gets
lost when disabling them, this can be seen in this screenshot:

A workaround for this could be made in the `asm-differ` repo.
### Other
I also allowed passing the other objdump flags to PS1 and PS2.
Adds caching to a bunch of dependency installs we're doing in CI to
reduce the runtime. Future:
- `Install apt dependencies (initial)` could definitely be made quicker
- `Build decompme_backend image` is 6min, perhaps we could use
[cached-docker-build](https://github.com/marketplace/actions/cached-docker-build)
(These are fine for now I think- I don't want to touch them much because
I didn't write them & CI has always been brittle.)