Git Product home page Git Product logo

Comments (10)

Marwes avatar Marwes commented on May 23, 2024 1

Having no gc would be interesting and very fitting for an embeddable language as the gc pauses can be a big detractor for applications such as games which need predictable throughput. I do however hope that having one heap for each executing thread I gluon can help out by letting the pause times be shorter

I will have to brush up on the linked languages but from what I remember they all come with both additional restrictions and they also are quite complex.

from gluon.

brendanzab avatar brendanzab commented on May 23, 2024

Doing a safe functional language with currying and nicely composable functions is super challenging to do without a GC. There's only so much ground you can break in a single language! πŸ˜„

from gluon.

sirinath avatar sirinath commented on May 23, 2024

It is not easy but perhaps if you track memory usage effects it might be possible.

from gluon.

brendanzab avatar brendanzab commented on May 23, 2024

What do you mean by 'track memory usage effects'?

from gluon.

sirinath avatar sirinath commented on May 23, 2024

See https://github.com/Microsoft/dafny and perhaps https://www.fstar-lang.org/

from gluon.

sirinath avatar sirinath commented on May 23, 2024

My Bad. It is Koka - http://rise4fun.com/Koka/tutorial/guide through the above languages also has effects.

from gluon.

sirinath avatar sirinath commented on May 23, 2024

Also http://rise4fun.com/SLAyer and other reasearch projects at http://rise4fun.com/ has some relavence. Also Nim has effect system which track memory related items: http://nim-lang.org/docs/manual.html#effect-system

from gluon.

sirinath avatar sirinath commented on May 23, 2024

Also this might be of interest for static analysis: http://flix.github.io/

I feel static whole program analysis you might be able to get rid of GC. Starting point would be escape analysis with GCed heap and a non GCed heap where part of the variable's lifetimes are infereded. Iteratively improve it until you are able to infer all usages. Also when each new reference is created the number of references can be counted as part of static analysis. Based on this you can collace which and allocate memory in regions.

from gluon.

Marwes avatar Marwes commented on May 23, 2024

I definitely want escape analysis at some point (though that is still some ways of). Even a coarse analysis could go a long for native functions if they could mark whether their arguments escape or not (native_set_position { x = 1.0, y = 0.0 }, the allocation of the record is likely not necessary since for such a small type it could be directly marshalled to a Vec2<f64> or similiar in Rust).

Static whole program analysis may be rather tricky as I hope to eventually have some sort of hot-swapping of code (ala Erlang) and gluon is currently quite close to dynamic languages when it comes to module loading for that reason. This it means that the concept of "the whole program" may be quite malleable which means additional complications when it comes to static analysis (not saying it is impossible though, just more complicated).

from gluon.

erlend-sh avatar erlend-sh commented on May 23, 2024

Having no gc would be interesting and very fitting for an embeddable language as the gc pauses can be a big detractor for applications such as games which need predictable throughput.

There’s recently been a good conversation about that regarding Mun: mun-lang/mun#206

from gluon.

Related Issues (20)

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    πŸ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. πŸ“ŠπŸ“ˆπŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❀️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.