Comments (10)
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.
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.
It is not easy but perhaps if you track memory usage effects it might be possible.
from gluon.
What do you mean by 'track memory usage effects'?
from gluon.
See https://github.com/Microsoft/dafny and perhaps https://www.fstar-lang.org/
from gluon.
My Bad. It is Koka - http://rise4fun.com/Koka/tutorial/guide through the above languages also has effects.
from gluon.
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.
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.
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.
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)
- Language server doesn't work in VSCode HOT 1
- VSCode plugin HOT 1
- Release of Version 18 HOT 1
- VM - Lifetimes in `DeSeed::new` allow aliased mutable references HOT 1
- Stack overflow on code loading / evaluation
- Incremental compilation / linking? HOT 1
- Sandboxing by disallowing file/network access? HOT 1
- gluon doesn't compile with latest rustc: missing lifetime specifier
- How to check return type of script before trying to convert it? HOT 1
- Runtime error on WASM HOT 3
- Function to convert List to Array or to sort Array by key?
- stateful run_expr
- Rust crate page outdated
- Release a new version? HOT 4
- How to get names of all symbols that a script defined?
- Support rust 1.70.0 HOT 8
- Stack overflow with polymorphic recursion HOT 1
- Gluom and Profile-Guided Optimization (PGO)
- 24 example fails to compile HOT 1
- Report a vulnerability in gluon-lang/gluon HOT 1
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
π Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google β€οΈ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from gluon.