https://kotlinlang.org logo
Docs
Join the conversationJoin Slack
Channels
100daysofcode
100daysofkotlin
100daysofkotlin-2021
advent-of-code
aem
ai
alexa
algeria
algolialibraries
amsterdam
android
android-architecture
android-databinding
android-studio
androidgithubprojects
androidthings
androidx
androidx-xprocessing
anime
anko
announcements
apollo-kotlin
appintro
arabic
argentina
arkenv
arksemdevteam
armenia
arrow
arrow-contributors
arrow-meta
ass
atlanta
atm17
atrium
austin
australia
austria
awesome-kotlin
ballast
bangladesh
barcelona
bayarea
bazel
beepiz-libraries
belgium
berlin
big-data
books
boston
brazil
brikk
budapest
build
build-tools
bulgaria
bydgoszcz
cambodia
canada
carrat
carrat-dev
carrat-feed
chicago
chile
china
chucker
cincinnati-user-group
cli
clikt
cloudfoundry
cn
cobalt
code-coverage
codeforces
codemash-precompiler
codereview
codingame
codingconventions
coimbatore
collaborations
colombia
colorado
communities
competitive-programming
competitivecoding
compiler
compose
compose-android
compose-desktop
compose-hiring
compose-ios
compose-mp
compose-ui-showcase
compose-wear
compose-web
connect-audit-events
corda
cork
coroutines
couchbase
coursera
croatia
cryptography
cscenter-course-2016
cucumber-bdd
cyprus
czech
dagger
data2viz
databinding
datascience
dckotlin
debugging
decompose
decouple
denmark
deprecated
detekt
detekt-hint
dev-core
dfw
docs-revamped
dokka
domain-driven-design
doodle
dsl
dublin
dutch
eap
eclipse
ecuador
edinburgh
education
effective-kotlin
effectivekotlin
emacs
embedded-kotlin
estatik
event21-community-content
events
exposed
failgood
fb-internal-demo
feed
firebase
flow
fluid-libraries
forkhandles
forum
fosdem
fp-in-kotlin
framework-elide
freenode
french
fritz2
fuchsia
functional
funktionale
gamedev
ge-kotlin
general-advice
georgia
geospatial
german-lang
getting-started
github-workflows-kt
glance
godot-kotlin
google-io
gradle
graphic
graphkool
graphql
graphql-kotlin
graviton-browser
greece
grpc
gsoc
gui
hackathons
hacktoberfest
hamburg
hamkrest
helios
helsinki
hexagon
hibernate
hikari-cp
hire-me
hiring
hongkong
hoplite
http4k
hungary
hyderabad
image-processing
india
indonesia
inkremental
intellij
intellij-plugins
intellij-tricks
internships
introduce-yourself
io
ios
iran
israel
istanbulcoders
italian
jackson-kotlin
jadx
japanese
jasync-sql
java-to-kotlin-refactoring
javadevelopers
javafx
javalin
javascript
jdbi
jhipster-kotlin
jobsworldwide
jpa
jshdq
juul-libraries
jvm-ir-backend-feedback
jxadapter
k2-early-adopters
kaal
kafka
kakao
kalasim
kapt
karachi
karg
karlsruhe
kash_shell
kaskade
kbuild
kdbc
kgen-doc-tools
kgraphql
kinta
klaxon
klock
kloudformation
kmdc
kmm-español
kmongo
knbt
knote
koalaql
koans
kobalt
kobweb
kodein
kodex
kohesive
koin
koin-dev
komapper
kondor-json
kong
kontent
kontributors
korau
korean
korge
korim
korio
korlibs
korte
kotest
kotest-contributors
kotless
kotlick
kotlin-asia
kotlin-beam
kotlin-by-example
kotlin-csv
kotlin-data-storage
kotlin-foundation
kotlin-fuel
kotlin-in-action
kotlin-inject
kotlin-latam
kotlin-logging
kotlin-multiplatform-contest
kotlin-mumbai
kotlin-native
kotlin-pakistan
kotlin-plugin
kotlin-pune
kotlin-roadmap
kotlin-samples
kotlin-sap
kotlin-serbia
kotlin-spark
kotlin-szeged
kotlin-website
kotlinacademy
kotlinbot
kotlinconf
kotlindl
kotlinforbeginners
kotlingforbeginners
kotlinlondon
kotlinmad
kotlinprogrammers
kotlinsu
kotlintest
kotlintest-devs
kotlintlv
kotlinultimatechallenge
kotlinx-datetime
kotlinx-files
kotlinx-html
kotrix
kotson
kovenant
kprompt
kraph
krawler
kroto-plus
ksp
ktcc
ktfmt
ktlint
ktor
ktp
kubed
kug-leads
kug-torino
kvision
kweb
lambdaworld_cadiz
lanark
language-evolution
language-proposals
latvia
leakcanary
leedskotlinusergroup
lets-have-fun
libgdx
libkgd
library-development
linkeddata
lithuania
london
losangeles
lottie
love
lychee
macedonia
machinelearningbawas
madrid
malaysia
mathematics
meetkotlin
memes
meta
metro-detroit
mexico
miami
micronaut
minnesota
minutest
mirror
mockk
moko
moldova
monsterpuzzle
montreal
moonbean
morocco
motionlayout
mpapt
mu
multiplatform
mumbai
munich
mvikotlin
mvrx
myndocs-oauth2-server
naming
navigation-architecture-component
nepal
new-mexico
new-zealand
newname
nigeria
nodejs
norway
npm-publish
nyc
oceania
ohio-kotlin-users
oldenburg
oolong
opensource
orbit-mvi
osgi
otpisani
package-search
pakistan
panamá
pattern-matching
pbandk
pdx
peru
philippines
phoenix
pinoy
pocketgitclient
polish
popkorn
portugal
practical-functional-programming
proguard
prozis-android-backup
pyhsikal
python
python-contributors
quasar
random
re
react
reaktive
realm
realworldkotlin
reductor
reduks
redux
redux-kotlin
refactoring-to-kotlin
reflect
refreshversions
reports
result
rethink
revolver
rhein-main
rocksdb
romania
room
rpi-pico
rsocket
russian
russian_feed
russian-kotlinasfirst
rx
rxjava
san-diego
science
scotland
scrcast
scrimage
script
scripting
seattle
serialization
server
sg-user-group
singapore
skia-wasm-interop-temp
skrape-it
slovak
snake
sofl-user-group
southafrica
spacemacs
spain
spanish
speaking
spek
spin
splitties
spotify-mobius
spring
spring-security
squarelibraries
stackoverflow
stacks
stayhungrystayfoolish
stdlib
stlouis
strife-discord-lib
strikt
students
stuttgart
sudan
swagger-gradle-codegen
swarm
sweden
swing
swiss-user-group
switzerland
talking-kotlin
tallinn
tampa
teamcity
tegal
tempe
tensorflow
terminal
test
testing
testtestest
texas
tgbotapi
thailand
tornadofx
touchlab-tools
training
tricity-kotlin-user-group
trójmiasto
truth
tunisia
turkey
turkiye
twitter-feed
uae
udacityindia
uk
ukrainian
uniflow
unkonf
uruguay
utah
uuid
vancouver
vankotlin
vertx
videos
vienna
vietnam
vim
vkug
vuejs
web-mpp
webassembly
webrtc
wimix_sentry
wwdc
zircon
Powered by Linen
server
  • c

    carrot

    06/28/2022, 10:14 PM
    I spent a few weeks working on performance improvements for a Kotlin server-side framework and folks here might find it interesting to look at (GitHub repo linked in the tweet) https://twitter.com/CarrotCodes/status/1541902976733876224 🙂
    v
    j
    • 3
    • 10
  • n

    Nino

    06/30/2022, 1:43 PM
    Hello, documentation recommends using
    <http://0.0.0.0:8080>
    , but after starting the server, this address doesn't work.
    <http://localhost:8080>
    works, tho. Why is it so ?
    l
    c
    e
    • 4
    • 10
  • a

    Andrzej Sawoniewicz

    07/01/2022, 4:13 PM
    Hi, I have a field named: isPrivatePerson: Boolean? in my data class. The JDBI has a problem with it because it cannot find the getter starting with "get". Is there any solution for that besides adding the separated getter and setter manualy?
    s
    • 2
    • 3
  • a

    Andrzej Sawoniewicz

    07/01/2022, 8:49 PM
    For a purpose of using MapStruct (mapping library) I need to annotate the default constructor. As I want to use vals in that class I want to annotate the constructor with all fields. I can of course use @JvmOverloads to get all variations but how could I annotate the one with all fields? data class ClassName @JvmOverloads @Default constructor(... - does not work
  • a

    André Martins

    07/05/2022, 10:55 AM
    Hello, I’m trying to make a unit test for a java service which uses a client written in kotlin. The client may throw a checked exception but since there are no checked exceptions in kotlin when calling the method from java it doesn’t force me to wrap it into a try..catch. When I’m trying to mock the method with Mockito it says I cannot throw a checked exception
    Checked exception is invalid for this method!
    The only ways I would be able to make the test is either rewrite the client method in java and mark it with checked exception or wrap the call and rethrow a runtime exception right? (any other ideias?)
    s
    • 2
    • 4
  • m

    Mohamed Jabarullah

    07/07/2022, 7:00 AM
    Can anyone suggest me a caching library for ktor server?
    j
    a
    +3
    • 6
    • 11
  • a

    antonarhipov

    07/07/2022, 12:39 PM
    Hello! Good docs is an asset, so we are constantly trying to improve 🙂 I’m working on improving the Spring/Kotlin tutorial in the docs and would love to hear some feedback.
    👏 5
    k
    p
    a
    • 4
    • 16
  • j

    janvladimirmostert

    07/10/2022, 3:00 PM
    When is the correct time to call AsynchronousSocketChannel::close() ? If I call it directly after calling write, I'm running into a connection reset error in the browser (I'm experimenting with HTTP servers) https://stackoverflow.com/questions/72903847/connection-reset-error-when-closing-asynchronoussocketchannel
  • c

    corneil

    07/10/2022, 5:52 PM
    if you use write that returns a Future and call close when Future isDone
    j
    • 2
    • 36
  • h

    hantsy

    07/13/2022, 7:20 AM
    Hello, I am using Spring Boot 2.7.1/Kotlin 1.6.20/Java 17 in the current project, and encountered the famous java module export package issues, but I added
    @file:Suppress("JAVA_MODULE_DOES_NOT_EXPORT_PACKAGE")
    at the first line of the Kotlin file, it did not resolve my issues. I have tried to recompile the whole project.
  • h

    hantsy

    07/13/2022, 7:21 AM
    Any suggestion here>
  • m

    minhnhat

    07/16/2022, 4:34 PM
    Hi everyone, I'm noob kotlin dev, try to use kotlin with spring boot
  • m

    minhnhat

    07/16/2022, 4:35 PM
    I have an issue with association suppose I have Post entity with OnetoMany Tag entity
  • m

    minhnhat

    07/16/2022, 4:36 PM
    I want to have add more tags to the post by this way
    post.tags.add(existedTag)
    postRepo.save(post)
    but It didn't work
    m
    • 2
    • 8
  • g

    Giorgos Makris

    07/19/2022, 6:17 PM
    Hello! I am trying to make rpc calls to a service i haven't written myself. The issue is, it uses messagepack to encode data. If they were using protobuff i would be ok with just using the java implementation of gRPC but it is not making it easy for me to switch the serialization method. Are there any kotlin libraries for rpc calls that would be easier to use for this purpose?
  • g

    Gorkem Yurtseven

    07/19/2022, 6:20 PM
    Hello! Quick question for Kotlin users with Spring.. When you are using constructor injection with spring do you keep the constructor classes as nullable or not nullable? for example;
    @Service
    class FirestoreService(
      private val firestore: Firestore?,
    )
    vs.
    @Service
    class FirestoreService(
      private val firestore: Firestore,
    )
    m
    • 2
    • 3
  • j

    jessel

    07/19/2022, 6:22 PM
    Non-nullable unless you have a good reason for it to be nullable
    ☝️ 3
    🙌 1
  • g

    Gorkem Yurtseven

    07/19/2022, 6:24 PM
    thanks! technically it can fail to initialize but i think spring will throw an error before code reaches the reference to the instance
  • l

    Larry Meadors

    07/19/2022, 6:30 PM
    off-hand, i can't think of a good reason for a constructor param to be nullable 😐
    👍 1
    💯 1
    🙌 1
    d
    • 2
    • 2
  • d

    dany giguere

    07/19/2022, 6:39 PM
    Hello everyone. I have this docker db instance script :
    version: '3.7'
    services:
    
      #MySQL Service
      db:
        image: mysql:5.7.22
        container_name: ${DOCKER_CONTAINER_NAME_SLUG}_db
        restart: unless-stopped
        tty: true
        ports:
          - ${DOCKER_MYSQL_PORTS}
        environment:
          MYSQL_ROOT_PASSWORD: ${DB_PASSWORD}
          MYSQL_DATABASE: ${DB_DATABASE}
          MYSQL_USER: ${DB_USERNAME}
          MYSQL_PASSWORD: ${DB_PASSWORD}
          SERVICE_TAGS: dev
          SERVICE_NAME: mysql
        volumes:
          - dbdata:/var/lib/mysql/
          - ./mysql/my.cnf:/etc/mysql/my.cnf
        networks:
          - my-network
    
    #Docker Networks
    networks:
      my-network:
        driver: bridge
    
    #Volumes
    volumes:
      dbdata:
        driver: local
    then in a different spring boot project, I have this docker-compose file:
    version: '3'
    
    services:
      app:
        container_name: api-app
        build:
          context: .
          dockerfile: Dockerfile
        ports:
          - "8080:8080"
    
    networks:
      default:
        external:
          name: my-network
    it fails to build because I get this error:
    java.sql.SQLNonTransientConnectionException: Could not create connection to database server. Attempted reconnect 3 times. Giving up.
    Anyone see the problem ?
    t
    m
    • 3
    • 11
  • g

    Gorkem Yurtseven

    07/20/2022, 1:30 AM
    I am sure this is one of those topics with no definite answers but how do you all think about throwing exceptions in kotlin while working with spring? Roman Elizov has a great blog post on how to use exceptions with Kotlin. He emphasizes that catching exceptions in kotlin is usually code smell. But does that mean that I should be able to throw exceptions freely in my Spring application if I am using application level exception handlers? More specifically let's say I have function that looks up an item in the database, and a controller that calls this service. If the item is not in the database, should I return a nullable from the service or should I throw an exception?
    d
    t
    • 3
    • 4
  • j

    jaguililla

    07/22/2022, 7:08 AM
    Another round of TechEmpower Web Frameworks Benchmark was released: https://www.techempower.com/benchmarks/#section=data-r21
    m
    k
    • 3
    • 3
  • m

    Mikhail

    07/22/2022, 8:01 PM
    I get stuck on
    com.zaxxer.hikari.HikariDataSource: HikariPool-1 - Starting...
    every single time I run my application. Using Spring Boot and Docker Compose on Arch Linux. What I've tried: • Rebooting • Checking the connection string • Checking database availability • Checking my docker compose configuration • Downgrading the kernel then rebooting • Upgrading the kernel then rebooting • Cleaning up docker (containers, images, volumes ....) then rebooting • Restarting docker Also, I use Spring Boot 2.7.1, PostgreSQL 15beta2-bullseye, Docker 20.10.17 and Docker Compose 2.6.1
    :not-kotlin: 1
    i
    • 2
    • 7
  • r

    Randah

    07/24/2022, 4:28 PM
    I added the environment variables but still can't deploy to heroku . I don't know what the problem
    v
    • 2
    • 1
  • s

    Slackbot

    07/25/2022, 3:55 AM
    This message was deleted.
    :thread-please: 1
    v
    • 2
    • 1
  • j

    julien lengrand-lambert

    07/27/2022, 1:35 PM
    Hey folks, I'm looking into data classes and I wanted to verify that
    copy
    creates shallow, not deep copies. The math checks out for complex types such as lists or other data classes, but not for 'primitives' likes Strings and Enums. Can someone help me clarify this? [Here is a complete example](https://pl.kotl.in/CzsYyKC_l) , but in essence for the given code, I would potentially expect
    name
    to also be mutated in the copy if data classes were purely shallow. Am I getting this wrong?
    import java.util.*
    
    enum class WEAPONS{
        AXE, SWORD, WAND, BOW
    }
    
    enum class CLASS{
        WIZARD, WARRIOR, PALADIN, THIEF
    }
    
    data class Origin(val city: String, var country: String)
    
    data class FantasyHero(var name: String, val weapons: MutableList<WEAPONS>, var heroClass: CLASS?, val origin: Origin = Origin("Utrecht", "The Netherlands"))
    
    fun main(){
        val gandalf = FantasyHero("Gandalf the Grey", mutableListOf(WEAPONS.WAND), CLASS.WIZARD)
        val anotherGandalf = FantasyHero("Gandalf the Grey", mutableListOf(WEAPONS.WAND), CLASS.WIZARD)
        val gandalfCopy = gandalf.copy()
        val betterGandalf = gandalf.copy(name="Gandalf the White")
    
        println("--------")
        println("Changing the first instance's name")
    
    
        gandalf.name = "Gandalf the White"
        println(gandalf.name)
        println(anotherGandalf.name)
        println(gandalfCopy.name)
        println(betterGandalf.name)
    
        println("--------")
        println("Changing the first instance's class")
    
        gandalf.heroClass = CLASS.PALADIN
        println(gandalf.heroClass)
        println(anotherGandalf.heroClass)
        println(gandalfCopy.heroClass)
        println(betterGandalf.heroClass)
    }
    
    --------
    Changing the first instance's name
    Gandalf the White
    Gandalf the Grey
    Gandalf the Grey
    Gandalf the White
    --------
    Changing the first instance's class
    PALADIN
    WIZARD
    WIZARD
    WIZARD
    s
    l
    c
    • 4
    • 34
  • j

    julien lengrand-lambert

    07/27/2022, 1:36 PM
    [The documentation of data class](https://kotlinlang.org/docs/data-classes.html#copying) does imply clearly that copies are shallow. The implementation of this function for the
    User
    class above would be as follows:
    fun copy(name: String = this.name, age: Int = this.age) = User(name, age)
  • y

    Yogeshvu

    07/27/2022, 10:24 PM
    Off-topic: https://engineering.fb.com/2022/07/27/developer-tools/programming-languages-endorsed-for-server-side-use-at-meta/
    o
    f
    • 3
    • 2
  • j

    James Richardson

    07/30/2022, 2:41 PM
    I dont know about the question, but you definitely have a GDPR problem with your code!
    m
    • 2
    • 2
  • a

    andyg

    07/24/2022, 5:31 AM
    Are Kotlin DSLs (typesafe builders) only for use internally by application developers? Want to create and expose a DSL for "power" end-users to define some complex objects that are currently quite tedious via a point-and-click UI, but think this is not possible. Allowing them to define via JSON/YAML is an option but the DSL format is even easier to use and validate.
    v
    a
    +3
    • 6
    • 21
Powered by Linen
Title
a

andyg

07/24/2022, 5:31 AM
Are Kotlin DSLs (typesafe builders) only for use internally by application developers? Want to create and expose a DSL for "power" end-users to define some complex objects that are currently quite tedious via a point-and-click UI, but think this is not possible. Allowing them to define via JSON/YAML is an option but the DSL format is even easier to use and validate.
v

Vampire

07/24/2022, 7:08 AM
Sure it is. Perfect example is Gradle. It provides a Kotlin DSL for its users to write build scripts in.
a

Alex

07/24/2022, 11:36 AM
I wrote a blog post about just this, hope you find it helpful https://blog.devgenius.io/writing-a-dsl-in-kotlin-42a9029b93a6
a

andyg

07/25/2022, 6:55 AM
@Vampire The people who use the Gradle Kotlin DSL are application developers. I'm talking about the end users of an application... like could they build an object with the DSL in a web form and submit it? Or write it in a separate file (instead of a JSON/YAML file) and reference it on the command line for processing?
v

Vampire

07/25/2022, 7:00 AM
What is the difference whether they are developers or not? The point is, the build script is a file with Kotlin DSL content that is interpreted by Gradle. So yes, you can also submit that via web form or supply a file on the command line. Latter you can also do with Gradle build scripts.
a

andyg

07/25/2022, 7:04 AM
Maybe I'm not asking the right way... can you submit a file or string following a DSL's rules to a compiled Kotlin app and have the app convert it into Kotlin objects?
The more I'm thinking about this, I think the difference is the DSL requires the compiler to create objects. Gradle reads the file pre-compilation so it works. End users are interacting with a compiled application. JSON libs like Moshi or Jackson perform serialization (JSON <--> Kotlin objects). Those libs don't exist for DSLs, the compiler does it.
v

Vampire

07/25/2022, 8:38 AM
How often do I need to repeat it? Yes, it is. And no, Gradle does not need any pre-compilation. It just does it as you usually execute the same build script several times and so it is more performant to precompile and use the result than to work from the source for each invocation.
You can either need the embedded compiler to compile in your application and then execute if you have similar needs, or you can simply use #scripting to just interpret the script on-the-fly.
a

andyg

07/25/2022, 8:54 AM
OK so if I receive a JSON file as the body of an HTTP post request, I can use Jackson or Moshi to deserialize it. How do I do it if instead of JSON, the POST body is an object definition as a DSL format?
v

Vampire

07/25/2022, 9:02 AM
You can use Moshi or Jackson, but I would actually use
kotlinx.serialization
. And I already told you that you use #scripting support for example. Your DSL is a Kotlin Script and you evaluate it. How exactly this is done depends on the concrete requirements, but I guess you should start with reading the documentation and then maybe ask in the proper channel.
a

andyg

07/25/2022, 9:42 AM
I wish this was a helpful exchange because this is what I would like to accomplish however I don't see any examples of what you say is "simple" in 3 days of Google searching and documentation review. Let me be clear I am not talking about Gradle, I am trying to implement a DSL (as an alternative to JSON or YAML), as a way for end users of my JVM web (ktor or http4k) application to submit data objects. In other words: instead of submitting JSON
{ 'type':'car',
  'model':'Subaru',
  'parts':{
    'tires':{'brand':'Yokohama', 'size':'285/35R19'},
    'oil':{'brand':'Mobil 1', 'viscosity':'0W40'},
  }
}
the users could submit something like this:
car {
  model = 'subaru'
  tires {
    brand = 'Yokohama'
    size = '285/35R19'
  }
  oil(brand = 'Mobil 1', viscosity = '0W40')
}
v

Vampire

07/25/2022, 10:07 AM
I wish this was a helpful exchange
Me too, but you just repeat your inital question with different words multiple times and do not accept the answer I already understood when you asked the first time. Doesn't change my answer. And I never said it is "simple", I said it is "possible" and that you should read about and ask in #scripting on how to actually do it best.
I just provided Gradle as an example where exactly that is done. A user of Gradle provides something using a Kotlin DSL and Gradle interprets and processes it.
d

David Saff

07/25/2022, 1:33 PM
This may be something close to what you're hoping to do? https://kotlinexpertise.com/run-kotlin-scripts-from-kotlin-programs/
g

Guillaume Taffin

07/25/2022, 5:00 PM
Just some ‘side remarks’: • I don’t really know what is the confidence your end users have with writing code but unless they actually are programmers I would not expect to much external users to especially enjoy using very programmatic apis. Even though it is possible, you have to balance the cost to potentially support those users that are not as comfortable with coding rules… Maybe it is worth it 🙂 • More importantly, when I read ideas where people want code to be interpreted at runtime I usually think it is not quite a good idea since it is a very nice back-door to inject malicious code. The recent Log4J vulnerability is a good example of where that kind of idea can lead… you know better than me what are your needs of course, and you probably already considered that… but I still think it’s worth emphasizing it for those who might read this feed 😛
a

andyg

07/26/2022, 7:31 AM
@Guillaume Taffin Great points, you are absolutely right. I'm helping a company build a tool for "power users" to bypass a very old desktop application. Define the objects using JSON rather than point-and-click through more than a dozen individual screens with lots of options. I thought instead of JSON or YAML maybe I could design a DSL that would be even easier and have some business logic built in. But you make a good point -- using a DSL you are writing code, it might look similar to JSON but it is much more powerful. And the more I think about that (and the fact they have no tooling), the less I expect the end users to be able to be successful. Leaning more towards writing a JSON Schema doc, using an off-the-shelf JSON validator and calling it a day. Thanks.
@David Saff Thank you, this is definitely the closest I've seen to what I was imagining. However the scripts still involve some Kotlin boilerplate such as `import`s and variable declarations. Even if I were to build a system to insert just the parts between
html {
and
}
the end users wouldn't have the tooling (code completion, all the other advantages of an IDE) to rapidly build a valid object. I will look into this more however, thank you.
@Vampire I appreciate your help Bjorn, perhaps some things that seem basic to you about how Gradle works or about the Scripting API are a bit higher-level than the applications I've built in the past. Thank you.
v

Vampire

07/26/2022, 8:10 AM
It's Björn, or Bjoern, not Bjorn. ;-) Why are you constantly putting words in my mouth? I also never said how Gradle is doing it is basic or easy, let alone you would be able to copy&paste. I just showed it as example that is doing exactly what you asked for to answer the question whether it is possible to do so and told you where to better ask about the topic.
l

Lukáš Kúšik

08/01/2022, 8:35 PM
@andyg This might also be relevant for you https://www.jetbrains.com/mps/
a

andyg

08/03/2022, 6:08 AM
wow, this is actually very cool. thanks!
View count: 9