Simc WebAssembly
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 15/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Necesita aclaración
- Estado de actividad
- Estancado
- Stack tecnológico
- cmake, cpp, wasm
- Área
- build-system
Línea de trabajo
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.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
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?
- Lenguaje dominante
- C++
- Estrellas
- 1.6k
- Forks
- 789
- Merge medio
- 8 h 18 min
- PR fusionados (30 d)
- 63
Preparar el entorno
- Incluye un Dockerfile o un archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de simulationcraft/simc
-
Arms slayer_st APL bugAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 69/100
simulationcraft/simc#11747 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 1-2 días Aptitud para principiantes 45/100
simulationcraft/simc#11935 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 3/5 1-2 días Aptitud para principiantes 68/100
simulationcraft/simc#11918 · 1 comentario ·
Los mantenedores suelen responder en 1 día
-
Timewalking Item Level BugAbierto
Dificultad 4/5 3-5 días Aptitud para principiantes 45/100
simulationcraft/simc#11845 ·
Los mantenedores suelen responder en 1 día
-
demonhunter.initial_furyAbierto
Dificultad 3/5 1-2 días Aptitud para principiantes 48/100
simulationcraft/simc#11752 · 1 comentario ·
Los mantenedores suelen responder en 1 día
Todos los issues de simulationcraft/simc
Issues similares
-
v9.6.0: CMake incorrectly enforces presence of libevdevPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 67/100
Los mantenedores suelen responder en 1 día
-
Dificultad 1/5 Menos de una hora Aptitud para principiantes 65/100
mltframework/shotcut#1943 ·
Los mantenedores suelen responder en 1 día
-
Rowan (2017) electron heating gives NaN for beta > beta_max; clip() then sets electrons to kel_minAbierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 72/100
parthenon-hpc-lab/kharma#213 · 1 comentario ·
Los mantenedores suelen responder en 3 días
-
enhancement
Dificultad 2/5 1-3 horas Aptitud para principiantes 68/100
metasequoiaime/msime#9113 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
tone-3000/tone3000-plugin#257 · 1 comentario ·
Los mantenedores suelen responder en 1 día