buildfoundation / ketolang Goto Github PK
View Code? Open in Web Editor NEWFuture of general purpose Сonfiguration languages. Side-effect-less dialect of Kotlin.
License: Apache License 2.0
Future of general purpose Сonfiguration languages. Side-effect-less dialect of Kotlin.
License: Apache License 2.0
We already run tests of course, but would be nice to also build samples on CI to validate their correctness
Sample should be built targeting both JVM and Native platforms.
Should make code clearer and leave less ways to write same code to users.
No GOTO!
After multiple discussions with JetBrains people, I was explained that Kotlin compiler is getting rearchitectured, in particular IR (intermediate representation) is getting split into Frontend IR (FIR) and Backend IR parts.
Currently, Ketolang hooks into IrGenerationExtension
.
Ketolang code analysis should be moved to FIR when FIR is stabilized (currently in Alpha):
Ketolang code generation (if added) should be moved to Backend IR:
IrGenerationExtension
is not available for IntelliJ within the same module, however FIR can generate declarations of the members while Backend IR can later inflate them with IR bodies.See:
JB contact for this: Dmitry Novozhilov @demiurg906
Hi.
First off, this seems like a great project, and I am looking forward to keeping track of it's development.
I was wondering, will this project support higher-order functions with receivers? This seems like it would be very useful for allowing for common types of Kotlin-style DSLs for being defined in Ketolang, is (in my opinion) one of the most distinctive features of Kotlin, and I believe is still compatible with the goals of Ketolang.
One issue I see with this is that in order to be useful, Kotolang would probably have to also support interfaces to allow for useful receivers for builder DSLs. But then again, maybe defining data classes in a "record of functions" manner would be sufficient, e.x.
data class BuilderScope(
val add: (Int) -> Unit
)
fun sillyBuilder(handler: BuilderScope.() -> Unit): List<Int> {
// Internal mutable var -- allowed in Ketolang
var ints = listOf<Int>()
val scope = BuilderScope { ints = listOf(it) + ints }
scope.handler()
return ints
}
val example = sillyBuilder {
add(1)
add(2)
add(3)
}
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.