Re: Visual D 1.1.0 released
On 06/03/2021 12:55, Imperatorn wrote: > On Saturday, 6 March 2021 at 06:59:28 UTC, Rainer Schuetze wrote: >> >> >> On 05/03/2021 12:26, Imperatorn wrote: >>> On Friday, 5 March 2021 at 10:57:05 UTC, Kagamin wrote: On Thursday, 4 March 2021 at 13:42:47 UTC, Imperatorn wrote: > https://filebin.net/19gupoeedfdjx5tx > > One GIF is the behaviour in C# I would like to have in D as well > with static if, and the other is displaying typeid on hover. The second is a debug session. Visual Studio doesn't show type information in debug session for C# either, only variable name and value. >>> >>> True, but could it? >> >> Visual D already does that with the help of the semantic highlighting: >> if an identifier is classified as a type or compile time value, it >> suppresses the debugger data tool tip and presents the usual one. > > Oh, I see. What about dub integration. How much effort would it be to > have something similar to what code-d has in vsc? Guesstimation? I'm not much of a dub user. Last time I checked, using it as a package manager was fine, but not as a build tool. Dependency checks were incomplete and rather slow. The visuald project generation is pretty dated and doesn't support multiple configurations which kind of breaks the usual VS workflow. I think for better integration dub project generation needs to be improved (and extended to vcxproj files), or Visual D has to do it itself from "dub describe" (if that's possible). The latter would also allow seamless updates of the project in the background. Then, integration of package management can be considered.
Re: Bubel ECS - Entity-Component-System architecture implementation
On Tuesday, 9 March 2021 at 21:01:07 UTC, Meta wrote: On Tuesday, 9 March 2021 at 16:36:31 UTC, ryuukk_ wrote: That's impressive, and shows the D capabilities, the future is WASM!!! glad to see D ready for it! Yes, I forgot to mention this, but WASM support out of the box is awesome! I have to note that for clarification. D can be compiled to WASM only using betterC switch (as nor Phobos or Druntime can be compiled to WASM). For demo I also used SDL2 which also supports Emscripten target. From my side to support WASM I had to remove D's TLS from code (in demo I used pthread_key as replacement), implement atomic operations using Emscripten API, write stdc bindings and my little std library (allocators). While targeting WASM core.stdc.* modules can't be used as they have no WASM implementation. That's impressive, and shows the D capabilities, the future is WASM!!! glad to see D ready for it! Thanks for an excellent release! Nice package! I'm glad you publish it Many thanks for your kind words. I'm working on a similar project, thanks for sharing, it'll be very helpful for me! Fell free to ask any questions if you want. Demo code isn't documented (except some demos files) and looks messy in places.
Re: Bubel ECS - Entity-Component-System architecture implementation
On Tuesday, 9 March 2021 at 15:21:26 UTC, Mergul wrote: On Tuesday, 9 March 2021 at 14:29:37 UTC, Meta wrote: Awesome! In the demo, I noticed that if there are >3000 entities spawned, there will be periodic dips in the FPS. Could this be Javascript's GC kicking in? What browser are you using? I've tested couple of browsers. In general JavaScript shouldn't be a problem, from what I know WASM only growth its memory. Library itself almost never call malloc (so memory is always allocated). On firefox I had problem with FPS most of a time and I'm not sure what cause this problem (I found several bug reports which could be related to that). Besides Firefox every web browser I tested was based on chromium engine. I didn't see any periodic dips, even with <200k entities. Maybe there is some problem related to WebGL or JS Workers. When JS side detects that WASM threads are enabled in browser it loads multithreaded version of WASM code and spawn workers. But overall multithreaded execution is always more stable for me. This is in Chrome 88.0.4324.192 on my 2015 Macbook Pro.
Re: Bubel ECS - Entity-Component-System architecture implementation
On Tuesday, 9 March 2021 at 16:36:31 UTC, ryuukk_ wrote: That's impressive, and shows the D capabilities, the future is WASM!!! glad to see D ready for it! Yes, I forgot to mention this, but WASM support out of the box is awesome!
Re: Bubel ECS - Entity-Component-System architecture implementation
On Monday, 8 March 2021 at 19:45:58 UTC, Mergul wrote: Hello everyone, I'm glad to announce release of my Bubel ECS library. Bubel ECS is Entity-Component-System architectural pattern implementation in D language. Library aims to delivery fast and flexible architecture for developing games. It's @nogc and betterC compatible. WASM is supported through Emscripten. Library has no external dependencies and was tested on Linux, Windows, Android and WASM. Project was developed in data oriented designed fashion and supports multithreading with automatic job generation. For more information go to Gitlab repository page. Thanks for an excellent release!
Re: Bubel ECS - Entity-Component-System architecture implementation
That's impressive, and shows the D capabilities, the future is WASM!!! glad to see D ready for it! I'm working on a similar project, thanks for sharing, it'll be very helpful for me!
Re: Bubel ECS - Entity-Component-System architecture implementation
On Tuesday, 9 March 2021 at 14:29:37 UTC, Meta wrote: Awesome! In the demo, I noticed that if there are >3000 entities spawned, there will be periodic dips in the FPS. Could this be Javascript's GC kicking in? What browser are you using? I've tested couple of browsers. In general JavaScript shouldn't be a problem, from what I know WASM only growth its memory. Library itself almost never call malloc (so memory is always allocated). On firefox I had problem with FPS most of a time and I'm not sure what cause this problem (I found several bug reports which could be related to that). Besides Firefox every web browser I tested was based on chromium engine. I didn't see any periodic dips, even with <200k entities. Maybe there is some problem related to WebGL or JS Workers. When JS side detects that WASM threads are enabled in browser it loads multithreaded version of WASM code and spawn workers. But overall multithreaded execution is always more stable for me. Another thing is that application has to work in the "unblocking" way. It means that main thread has to release control to web browser every frame and browser sometime takes more CPU time. And last thing, I'm not specialist in web technologies so it could be something else what I'm not aware of :)
Re: Bubel ECS - Entity-Component-System architecture implementation
On Monday, 8 March 2021 at 19:45:58 UTC, Mergul wrote: Hello everyone, I'm glad to announce release of my Bubel ECS library. Bubel ECS is Entity-Component-System architectural pattern implementation in D language. Library aims to delivery fast and flexible architecture for developing games. It's @nogc and betterC compatible. WASM is supported through Emscripten. Library has no external dependencies and was tested on Linux, Windows, Android and WASM. Project was developed in data oriented designed fashion and supports multithreading with automatic job generation. For more information go to Gitlab repository page. Its beta version but core is fully functional and finished. I have planned some bigger features like Worlds support, better events handling or even C-API which can lead to some changes in API. If you want try Bubel ECS I prepared demo which works in browers through WASM (Emscripten) and even supports multithreading (on Chromium based browsers, Firefox had some performance issues even on single threaded version when last tested) Demo is still WIP and it can be hard to understad how it works (how to use its features). There is possibility to enable/disable almost all systems in runtime and changing components and data for all entities. All components and systems are exact representation of what they are in code. I'm using Gitlab CI for automated testing (betterC testing included) Note: Library support multithreading but has no code for actual parallel execution, it only generates jobs and dependencies. In demos I'm using mmutils.thread_pool (my brother's library) .I will add simple integration code for it in near future for people who wants multithreading working out-of-the-box. Dub: https://code.dlang.org/packages/bubel_ecs Gitlab: https://gitlab.com/Mergul/bubel-ecs Documentation: https://mergul.gitlab.io/bubel-ecs/ecs.html Wiki: https://gitlab.com/Mergul/bubel-ecs/-/wikis/home (WIP I've started making tutorial there) Online demo: https://mergul.gitlab.io/bubel-ecs/ecs_demo.html Awesome! In the demo, I noticed that if there are >3000 entities spawned, there will be periodic dips in the FPS. Could this be Javascript's GC kicking in?