-
Notifications
You must be signed in to change notification settings - Fork 158
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Feature/gc #372
base: master
Are you sure you want to change the base?
Feature/gc #372
Conversation
it seems this version of hl powerful. |
current branch is not support cmake in ubuntu. |
@sonygod Yes, this is a work in progress. No guarantees that anything works for anyone yet. My setup is on OS X using the |
Looking forward to updates on this PR @Aurel300 ;) |
2 similar comments
Looking forward to updates on this PR @Aurel300 ;) |
Looking forward to updates on this PR @Aurel300 ;) |
Is this dead? |
The benchmarks are really promising. Will this stream ever be finished? |
Since this PR was posted with no actual description, I thought I would provide some background for anyone that stumbles upon this. This PR is about improving memory management, specifically the conservative tracing garbage collector from "mark and don't sweep" to "immix-style mark region and sweep":
The changes in this PR are currently based on a fork with last common commit of 2020-01-16 (125 commits behind master) and 13 changes between 2020-03-30 and 2020-05-25. The paper states that the prototype GC was developed separately using only the HashLink GC API for reference for ease of eventual future integration back in to HashLink. The paper also mentions (section 3.6):
and (Appendix A):
The paper also covers several potential improvements (some requiring changes to the GC API which this set of changes attempted to avoid). The blog post mentions:
So presumably the current "immix" derivative GC is currently just replacing the original in the branch (instead of adding so they can both exist in parallel) and does not support some architectures (Windows and 32-bit x86, etc.) that the original GC supports. I imagine such things would would have to be rectified to get this merged into master. |
I've read through a good chunk of that material. I was just hoping that this stream might end up completing, but based on your elaboration, it really sounds like it's dead. There are a few of the benchmarks that really show the potential of this approach, and it would remove some of the benefit hxcpp has over hashlink. Hashlink is so amazing for development, but I may consider shipping on hxcpp due to the perf, but that's such a along way off it's academic atm. Thanks @Uzume for the detailed explanation. |
@onehundredfeet Well the fact that @ncannasse opened, then closed, then reopened and marked it as a draft all on 2020-04-27, provides a hint that as it stands this is unlikely to ever be accepted/merged. However, it also implies the concept is very interesting and important so a new GC based on this work is still likely in the future (provided someone does the work to get it integrated properly). The fact that all the work by the author was done before the paper was published also seems to establish that the author has no immediate plans to actually work on getting this integrated (he got his degree and moved on; although it should be noted the author is still about as I have seen newer Haxe blog posts by him). After 2022-05-25 (currently about a month away), there will have been no actual changes to the branch code for over two years (unless something is in the works very soon which seem unlikely). So I see this particular PR intentionally open but dead until a better one comes along because the concept is still valid and it is a somewhat functional prototype (as evidenced by the benchmarks that are still kept up-to-date mentioning "HashLink Immix" and "HashLink/C Immix"). |
@Uzume Thanks for the summary! I am indeed still around and do things with Haxe, although I have limited free time and my current focus is |
@Aurel300 Thanks for the update! I am definitely interested in any progress here. |
@Aurel300 A good universal FFI like ammer is very useful. However, even if there are bugs and this fails in a number of cases, it might be possible to get this merged if it was "aligned" as only one possible GC at compile time (and certainly not the default). Then others could more easily work on solving such issues and perhaps making it more robust and perhaps even one day the default. I do find it somewhat amusing that such things are so hard to debug but are then often used to debug memory leak issues. I suppose it is a bit like debugging debugger development. |
Just posting a quick note to mention I'm also super interested in any improvement to the GC. Hope to see this PR merged one day :) |
No description provided.