Simc WebAssembly
I maintainer di solito rispondono entro 1 giorno
Nessuno ha ancora preso questa issue.
Valutazione
- Difficoltà
- 5/5
- Tempo stimato
- Più di una settimana
- Idoneità per principianti
- 15/100
- Tipo di issue
- Funzionalità
- Chiarezza
- Da chiarire
- Stato di attività
- Ferma
- Stack tecnologico
- cmake, cpp, wasm
- Ambito
- build-system
Direzione di ricerca
Start by reading the CMake scripts and the discussion about which branch to target; the issue proposes broad build-system changes rather than a defined task. It mentions concurrency.hpp, sc_profileset.cpp, and a proposed mock_concurrency.cpp as examples to investigate. Done would require agreeing on scope and branch, then delivering a working WebAssembly build, but the issue does not define acceptance criteria.
Scritto dal modello di indicizzazione a partire dal testo della issue.
Descrizione
I am currently experimenting with creating a web assembly module from the simulationcraft codebase by compiling it with emscripten. In the long run I want something that can be used to start a side like raidbots.com but without the need to have some costly server to run the simulations on. I also do not want the users to have some client to install and connect it to a side. Running simulationcraft as part of the side is the best of both worlds. What I basically want to create is an easy way to compile simulationcraft to an wasm file that can be included into a website and called into from javascript like this:
var simc = Simc()
simc.simulate("profile")
I managed to come up with some proof of concept where I have a simc running inside the browser and doing successful simulations. There is still a lot of work to do. I am interested in mainstreaming it.
Would that be something you are interested in merging even though that would mean to merge some larger patches that touch multiple and restructure the build system?
The largest part that need to change the build system that needs to be more flexible and needs to allow for enabling and disabling features. This is necessary because not all parts of simc are useful for the wasm target and we need a way to easily switch them on and off. Right now I removed all dependencies on phtreads because the threading support in the browser is highly unstable and only possible with Firefox Nightly.
I think the easiest thing would be to apply the needed changes only to the cmake system and make it to a first class citizen.
Therefore I would start with merging some patches where I add some missing functionality to the cmake scripts and and add some more #defines that are switchable through cmake options. For example:
- SC_MULTITHREADING: Threading support is not mature in browsers. Should be disabled for the wasm target until browsers get better.
Other things can be removed too for wasm because we need fewer things and want to shrink the size of the binary since it must be transferred via network on page load.
I also would also remove the file globbing from the cmake script and replace it with explicitly defined *.cpp files to compile. In the process I might change the directory structure a bit. The reason is that I need to select different files based on selected options and wether I compile for wasm or for your computer. For example I implemented a mock_concurrency.cpp that does basically nothing and removed the sc_profileset.cpp files from the build since they use std::thread directly without the wrapper from concurrency.hpp.
There are some other issues that make this hard. For example I am not sure from which branch I should start my wasm branch. There is the default legion-dev branch and the bfa-dev feature branch. Problem is that non-bfa code changes (like improvements to cmake scripts) are merged to the feature branch instead of to the main branch.
Will bfa-devand legion-dev be merged into a new master on bfa release and should I wait for that before I start a pull request? And for right now should I branch off bfa-dev to have fewer merge conflicts later on?
- Lingua principale
- C++
- Stelle
- 1.6k
- Fork
- 789
- Merge medio
- 8h 18m
- PR unite (30g)
- 63
Preparare l'ambiente
- Include un Dockerfile o un file Docker Compose
- Nessun modello di pull request
- Leggi la guida per i contributori
Come iniziare
- Leggi tutta la issue e poi la guida ai contributi del progetto.
- Commenta sulla issue per dire che te ne occupi tu — evita che due persone facciano lo stesso lavoro.
- Fai un fork del repository e lavora su un branch.
- Apri una pull request che faccia riferimento al numero della issue.
Altre issue di simulationcraft/simc
-
Arms slayer_st APL bugAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 69/100
simulationcraft/simc#11747 · 2 commenti ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 45/100
simulationcraft/simc#11935 ·
I maintainer di solito rispondono entro 1 giorno
-
Difficoltà 3/5 1-2 giorni Idoneità per principianti 68/100
simulationcraft/simc#11918 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Timewalking Item Level BugAperta
Difficoltà 4/5 3-5 giorni Idoneità per principianti 45/100
simulationcraft/simc#11845 ·
I maintainer di solito rispondono entro 1 giorno
-
demonhunter.initial_furyAperta
Difficoltà 3/5 1-2 giorni Idoneità per principianti 48/100
simulationcraft/simc#11752 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
Tutte le issue di simulationcraft/simc
Issue simili
-
v9.6.0: CMake incorrectly enforces presence of libevdevForse già presa Una pull request collegata a questa issue è aperta o già unita. Aperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 67/100
I maintainer di solito rispondono entro 1 giorno
-
Rowan (2017) electron heating gives NaN for beta > beta_max; clip() then sets electrons to kel_minAperta
Difficoltà 2/5 1-3 ore Idoneità per principianti 72/100
parthenon-hpc-lab/kharma#213 · 1 commento ·
I maintainer di solito rispondono entro 3 giorni
-
enhancement
Difficoltà 2/5 1-3 ore Idoneità per principianti 68/100
metasequoiaime/msime#9113 ·
I maintainer di solito rispondono entro 1 giorno
-
bug
Difficoltà 2/5 1-3 ore Idoneità per principianti 65/100
tone-3000/tone3000-plugin#257 · 1 commento ·
I maintainer di solito rispondono entro 1 giorno
-
Locked plugin flip-flops position on every refresh after being disabledForse già presa @Illustar0 l’ha presa oggi. Apertaissue report
Difficoltà 2/5 1-3 ore Idoneità per principianti 74/100
ModOrganizer2/modorganizer#2449 ·