Simc WebAssembly
维护者通常 1 天内回复
还没有人认领这个 Issue。
评估
- 难度
- 5/5
- 预计耗时
- 一周以上
- 新手友好度
- 15/100
- Issue 类型
- 功能
- 描述清晰度
- 需要澄清
- 活跃度
- 停滞
- 技术栈
- cmake, cpp, wasm
- 领域
- build-system
调研方向
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.
由索引模型根据 Issue 内容生成。
描述
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?
- 主要语言
- C++
- 星标
- 1.6k
- 派生
- 789
- 平均合并
- 8 小时 18 分钟
- 30 天内合并 PR
- 63
环境准备
- 提供 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 阅读贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
simulationcraft/simc 的其他 Issue
-
难度 2/5 1-3 小时 新手友好度 69/100
simulationcraft/simc#11747 · 2 条评论 ·
维护者通常 1 天内回复
-
难度 3/5 1-2 天 新手友好度 45/100
simulationcraft/simc#11935 ·
维护者通常 1 天内回复
-
难度 3/5 1-2 天 新手友好度 68/100
simulationcraft/simc#11918 · 1 条评论 ·
维护者通常 1 天内回复
-
难度 4/5 3-5 天 新手友好度 45/100
simulationcraft/simc#11845 ·
维护者通常 1 天内回复
-
难度 3/5 1-2 天 新手友好度 48/100
simulationcraft/simc#11752 · 1 条评论 ·
维护者通常 1 天内回复
查看 simulationcraft/simc 的全部 Issue
相似的 Issue
-
enhancement GUI maintainer-review
难度 2/5 1-3 小时 新手友好度 66/100
aethersdr/AetherSDR#6681 · 1 条评论 ·
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 65/100
维护者通常 1 天内回复
-
Bug
难度 2/5 1-3 小时 新手友好度 70/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 68/100
维护者通常 1 天内回复
-
area: ui bug good first issue P2: medium value: medium
难度 2/5 1-3 小时 新手友好度 75/100
patrick-hudson/put.gd-desktop#366 ·
维护者通常 1 天内回复