#dev-general
1 messages ยท Page 179 of 1
List.flatten?
@prisma wave If i wanted to multiline a function chain how would it work?
some-list
map add-1
filter is-even
forEach (it) => {
print it
}
```?
List.flatten?
@prisma wave yeah but it gives me[[a]], [[b],[c]], [[d],[e]]
It barely works right now lol
Multiline looks a bit odd without parenthesis and dots
Pretty cool though
@empty flint so map that with flatten again
Yeah I like it
And you could always use the parentheses and dots
They're just optional
yea currently the infix chains are single lined
Ah ok
Also why did you guys choose to go with let for variables?
reads more naturally imo
Also reads better than val and var which was the other choice
It looks cool, and its more englishy than other options
As a non native English speaker it confuses me a bit more
Its also the "syntax" you would generally use in maths to assume variables
^
I think in general (maybe not in your case) it is easier to understand than val/var
What do you guys use to find the cause of lag from a server, other than timings?
For some reason the server of my client die randomly.
I guess for me is that var could be easily translated to my language while let would.. definitely be interesting xD
Pretty cool anyways, good job on it ;p
Ty :)
yes gj
That makes sense
im proud of u
Can you do that on a server?
Yes
How
Although I will mention it doesn't actually work
Run the server though intellij @distant sun
-.-
@empty flint so
mapthat withflattenagain
@prisma wave Oh sorry I was wrong, so I actually get[[a],[bc],[de]]
I cant lol
so when we gonna start circlejerking elara
Use JProfiller
Like the parser and lexer works, you can make variables but nothing else
@onyx loom now
elara good kotlin bad ๐ณ
Yugi is a bless

^
So flatten() is working from the inside-out and not from the outside in
Use JProfiller
@ocean quartz still, doesnt the server have to run on my pc?
How do I use the spread operator without passing it as varargs?
What
Isnt jprofiller paid?
Because I have [[a, b, c],[d, e, f]] and I need [a, b, c],[d, e, f] but flatten() gives me [a, b, c, d, e, f]
I think there is a free version or trial not sure
so if I could spread [[a, b, c],[d, e, f]] as if it was for a varargs value I'd get [a, b, c],[d, e, f]
someone made simp language https://repl.it/talk/challenge/SIMP-The-language/51585
nice
@empty flint isn't [a, b, c],[d, e, f] impossible to express in a single value?
that would be a tuple / Pair
well it's actually an n-tuple
but it's all encapsulated by a list
it's complicated ^^
Basically I need to generate a list of lists, right
You want to unwrap a 2d array then?
and the elements of list A (the lists) are generated by some objects I have in another list
so I have my List<Foo>
that has to map to List<List<String>>
and each Foo can generate an unknown number of List<String>s
So I thought I could encapsulate all the generated lists inside one list and get a List<List<List<String>>> and then just flatten it, but it flattens the inside list, not hte outside one
and I actually need to spread it
not flatten it
xD
Lemme get some pseudocode going so you understand better
Sounds to me like you're overcomplicating what you want with all the nesting lists
yes
^ seems like it
help
could do
idk if its needed, but would be nice id say
just cba
it's currently in sync with the github
so it would have to reference itself i guess
idk
Foos.map { foo ->
ArrayList<List<String>>().apply {
add(foo.primaryList)
if(foo.hasMoreLists) {
foo.moreLists.forEach { moreList ->
add(moreList)
}
}
}
}
@onyx loom updated it
๐
have guild plugin supported 1.16.2?
Welp, time to learn how to read a profiller smh
Idk
Hopefully spark will help us
I dont mind learning more stuff about performances
Ayyy I did it. I'm an idiot.
Can't map a list directly to something else. It maps all the elements
Foos.let {...} did the trick
ty for your attention
hey @heady birch how tf did you get this plugin to work when it creates loads of new instances of objects in the constructor that take the not yet initialised plugin as a parameter
it does
basically, it initialises the storage manager, which initialises the YAML storage provider, which attempts to load a file in it's initialisation that requires plugin not to be null as it calls plugin.getDataFolder()
okay he doesn't actually
again just luyten being trash
yo matt
yoyo
I need someone's opinion 
So I'll have a permission annotation and a requirement one (in a way it seems redundant)
The requirement will be global, and permission only on certain platforms
To abstract it well, i was thinking about treating a permission as a requirement, meaning when a command registers it will register a personal requirement for permission
Sounds like a good design or hacky?
And yo
hows the Intellij GUI viewer plugin going? (if you are doing it)
Not working on it yet
Cuz IntelliJ is funky with Javafx and swing sucks
that's facts
I also require the MF rewrite dad kthxbye
it's like a plugin
His suggestion to make a plugin to view the GUI you're making in real time on a tab on IJ
^^
that could be useful
so you don't need to open minecraft
etc
ye very useful
my friend's bukkitkotlinapi has it
Bukkit Kotlin API?
unfortunatly only works for who's using the api
ye
or BUKKRIPT
as he also calls it
Yeah
wow that actually looks pretty good
and it uses kotlinx.serialization and coroutines
he's big dev
he also uses pdm :)
developing's my hobby too xD
not sure which
Actually imma ping him something
@astral quiver No plugin que voce fez para IJ, voce usou TornadoFx?
Eu tentei e falhei por completo xD
I think it's google translate time lol (for me)
nha
Matt is portuguese too
xd
(actual fact almost no one knows)
ok now it makes sense
yeah I think I knew that
I am a mix match of a mess
if it's on his GitHub page (which I just found it is) then yeah I knew it lol
I am a mix match of a mess
@ocean quartz same
I didn't remember it but I know it
Half Brazilian, half Portuguese, engaged to an American
oof
I'm just English lol
English, meaning the country within the United Kingdom, England
nope
I did not know that fact
the US speaks English, but is not English
"English" means both the language and the place of origin
and in this context, I mean the place of origin
oof thx for the info
@ocean quartz ^^
Yes I did a IntelliJ plugin
I do not actually, I really like it, but I do not use it
also @astral quiver ask the dev role in #role-request xd
I was hopping to Jetpack Compose join the JVM
Oh okay, i tried using it but IJ didn't like it too much xD
TornadoFX is Kotlinified JavaFX isn't it
Actually, the Jetbrains is working on bring Jetpack Compose to Desktop
Yes, is a DSL for JavaFx
Is pretty cool
what kinda Desktop?
so it's cross-platform then
With the anoucement of Kotlin Multiplatform Mobile today
meaning I can use it on my Arch Linux system is what I'm getting at
maybe in the near future, Jetpack Compose works on iOS
souza LIVEEEEEE estou em depre
Not yet
oh so they announced it will
what even is JetPack? lol
and I don't know if their is a port being build somewhere
any predictions ?
sorry, I don't do Android development
ah okay
BUTTT, the part that is really nice too is that it is focus on Kotlin Multiplatform, not be supporting ALL PLATFORMS but, by working with the Multiplatform COMMON CODE
iOS is not implemented, but this does not mean that anyone could implement, because, the code is already their
Jetpack Compose, when is got better for Desktop we will be able to create IJ plugins with it as well
ye but which one are you currently using though?
About KotlinBukkitAPI and Bukkript, I'm working on it alot
I'm writing PDM PR to support more cases
Oh no you summoned him
PDM is really really really noice
So let me correct myself..
It is known that he lurks in the dark until PDM, Elara, Clojure, or "Java bad" is mentioned
KBA is an api for kotlin
I'm working now on supporting submodules PDM
and Bukkript is an actual plugin like (the s word) but much much better using kotlin as language
correct?
Elara bad
Bukkript brings the Kotlin Scripting to Bukkit
Is a plugin that reads the scripts from a folder, compiles it and loads it
With it, their is IntelliJ support as well for the scripts
So you have the nice power of the IntelliJ when writing Kotlin
GUI viewer plugin
Yes, their is a GUI Viewer as well
the one thing I hate you for not doing it for java
Gaby
that's like the 1% I hate you
You have sinned
the other 99% is just love
He is a wise one
gets attacked by 31239 Java devs in here
yeah they just don't have the right to an opinion
Lmao
F
I actually audibly snorted at that one
lol what?
This is what @pastel imp is talking about
Elara > everything
I guess I already share with you folks
Elara scripting API?!?1?1??!!
I am sharing everything in here burv xd
So many plans
Ez
btw @astral quiver if you want you can "advertise" the project in #showcase if ya want to get people's attention
xd
Are we having java interop?
wth is elara?
Good language
Not yet
I'm working on a big shift for the project
Depends if we're compiling to Java bytecode or something else
Interop from native would probably be difficult
I think we'd better compile to java bytecode
I'm working on a big shift for the project
@astral quiver am I NOT informed?
Probably a better idea
We could without compiling to bytecode ๐
I'm relocating all its APIs because that could have conflict with another Spigot plugin that uses Kotlin
We'd also needs VM if we compiled to native
Odin style
Yeah but reflection bad
I do not know wth pdm is but seems gud
PDM, the official MLM scheme of Help Chat
:)
โข๏ธ
We can hopefully rig a good enough vm together
lol
fail
Barry
PDM is the best gradle plugin ever
Free my man
!!!
Literal injustice
Rude Barry
I mean we have all the time in the world technically
True
With 3 people
Magic
Big brain stuff
Runtime dependency downloading
Runtime depedency downloading
With MAGIC

the heck is an mlm scheme
You just put the dependency and its downloads
Multi level marketing
Pyramid scheme
Multi level marketing, pyramid scheme
o
so as you said.. makes the jar file "smaller"?
but magic needs fuel?!
PDM next level -> change the JavaPlugin to insert the loader ๐
Shrink ray
U got relocation done yet BM
It also features NO relocation and compliance with spigot resource guidelines
when you put ASM at the project, we can do that
๐ฌ
๐
Just for checking in
I'm scared of relocation
F
Just kinda ignoring it for now
I can publish plugins with PDM, right?
fr just use luckoโs lib bm
If not, I will have a fucking talk with MD5
he literally has a lib just for relocating jars at runtime
Probably will
LP is a complicated boi
Maybe is not the best choose
Would be nice to have everything in-house tho
To do magic stuffs......
@astral quiver there's a bit of ambiguity. I think you should be able to publish them but ashu's got rejected so...
Pretty sure it fits within the rules just fine
Issue is only woth premium plugins
I a big library, I have so many things to say about it
They state rhat the plugins should work staright off without internet connection
But I will focus in the IntelliJ plugin
Hmm
because it is the only one that haves ๐
God I cant type agaon
Don't some premium plugins do dependency downloading though?
which should work with default GUI making
Dont think so km
Currently, I'm working on a IntelliJ plugin to improve productive when creating new custom Menus for Minecraft Server using my library KotlinBukkitAPI and this was the result so far. https://t.co/OpL0Q8hky6
this thing is just
GUD
I WANT IT
me big boi
really sad
me big tier 2
?imgur
You won't be able to upload images here directly to avoid spam, so please use https://imgur.com/ to upload images/screenshots.
I just know that...
I want it
lol
no
just the link
lol
ye
welp
let me help you
tkx
How is a Bukkript script different to a normal kotlin script?
The Hotreload stuff makes me pretty satisfying
From main.kts ?
Is build with the Kotlin Scripting API
focus on Bukkit
Bukkit Imports, plugins that you have on your folder is put in the Classpath and you can use it
Ah I see
(SORRY for the s word ๐ญ )
cuz the functionality of the plugin already depends on internet access
Also, you can use NMS in it as well
The project find your SERVER JAR in your server as well
THAT I didn't knew
And all of it works in the IntelliJ
@quiet depot weird, since Ashu's is the same but got rejected
Is that an arrangement with spigot staff?
no but
Currently I'm working on a Project Wizard for KotlinBukkitAPI
and have a better icons for the Bukkript script in the IntelliJ
Let me get some screenshots
Not that
you mean the script icon?
Hope one day, KotlinBukkitAPI helps developers in a way that PDM does
yo so with PDM instead of implementation I use pdm ?
Yes
that's not confusing at all
why using skripts
and maybe get a job in future :>
when you can use Bukkript?
heard that first time
Hope you heard that more times
at least it is in kotlin
@quiet depot Thoughts?
https://discordapp.com/channels/164280494874165248/695431668944732270/750128522139271269
@pastel imp
Tkx, you are a good friend
nha I am just a big fan
that seems perfectly fine @ocean quartz, having permissions as requirements
Nice, that'll make it much simpler to implement
That was the icons that I was talking about
those are the plugins it supports?
For you find Bukkript folder faster
No
Bukkript supports every simple plugin that exists
I do not have a plugin supoort stuff, the Bukkript just work with
You can write your on plugin and you will be able to use their API in Bukkript
@ocean quartz out of curiosity, how do you plan to implement requirements via annotation?
considering they canโt store things like consumers
@ocean quartz out of curiosity, how do you plan to implement requirements via annotation?
@quiet depot assuming it's for his command framework?
thatโs one of the reasons I dislike annotations, theyโre too limited
You can write your on plugin and you will be able to use their API in Bukkript
@astral quiver understood so it's just like a "spigot"
but actually not
welp
hard to explain
Yes, Kotlin DSL help me alot
welp never rlly used kotlin
@quiet depot My current idea is just to do the same i do in the JDA implementation
Which is the same way i do the messages and completions
With String IDs like @Requrement("#requirement-id")
Groovy better
do you folks know Kord?
@quiet depot My current idea is just to do the same i do in the JDA implementation
Which is the same way i do the messages and completions
With String IDs like@Requrement("#requirement-id")
@ocean quartz but then you would need to set the requirement id to an requirement somewhere nha?
where would it be?
sounds like something sxtanna would make/made (kord)
that's actually interesting
@pastel imp Same way as the messages/completions, on enable or something like that you register it
commandManager.registerRequirement("#id", sender -> sender.doesSomething)
hmm wouldn't that be a pain in the ass?
i donโt like that separation
Yeah it's pretty annoying but, there isn't many ways around it when working with annotations
thatโs also undoubtedly disgusting, but Iโd prefer that over the alternative
ye also don't rlly like it much
matt this is why you donโt use annotations like this
but hey... it's better than the other way
matt this is why you donโt use annotations like this
@quiet depot I mean I like how he uses annotations for the MF
makes things "easier" to understand
in MY personal opinion
Iโm not a fan of annotations in general
latest v of PDM is 0.0.25? Can't find it anywhere
0.0.26
you got a certificate for that blitz?
Yeah i know, but other implementations of commands i've seen always were pretty annoying compared to annotations
So that's why i went with it
If i can think of something better I'll do it though
Still idea storming
@quiet depot actually curious.. how would you do.. without annotations...?
@astral quiver yeah I'll update when you're done :)
another thing. if I use pdm do I need to relocate ?
for a command framework, I much prefer the more traditional route of just passing the command name via the super, and having an execute method with the sender, and arguments
Tkx alot ๐
doesn't seem that "clean"?!
Do you folks have permission to send emote from another server?
Which hasn't caused any major problems yet
so I don't relocate anymore?
I plan to add it soon
it seems perfectly clean to me afonso
No need anymore
test it? souza
I'm working on a PR that will make relocation easy
When it does get added, it will be something that pdm supports automatically
kk that's why I asked. wasn't sure if its still needed
Rather than a per-plugin thing
ah
it seems perfectly clean to me afonso
@quiet depot welp that's in the eyes of an experienced dev
xd
@astral quiver how does it make relocation easy?
by clean I also mean easy to understand and less "lines"
For me, I can have a module that will be published relocated
and use PDM to download it
Isn't
public final class TestCommand extends Command {
public TestCommand() {
super("test");
}
@Override
public boolean execute(@NotNull final CommandSender sender, @NotNull final String[] args) {
sender.sendMessage("hi");
}
}```
Currently I'm working on submodules PDM resolver
Alrighty
If you have to build a module, that depends from another module that has PDM
@pastel imp
it will get the PDM declarations
Very nice
hmm welpwith an
with annotations you can reduce that to 3 lines? oof
without counting public final class TestCommand extends Command {
does it require registration somewhere else though?
yes?
so 4 lines, and separation
thatโs not a benefit, thatโs encouraging you to violate the single responsibility principle
but what's the real difference then?
I mean, arguably having requirements in the same class as the actual execution is an SRP violation
well bm, if the class is merely a command class, I think anything relating to that command, can be in that class
* Exception is:
org.gradle.api.plugins.UnknownPluginException: Plugin [id: 'me.bristermitten.pdm', version: '0.0.26'] was not found in any of the following sources:
- Gradle Core Plugins (plugin is not in 'org.gradle' namespace)
- Plugin Repositories (could not resolve plugin artifact 'me.bristermitten.pdm:me.bristermitten.pdm.gradle.plugin:0.0.26')
Searched in the following repositories:
Gradle Central Plugin Repository``` something did not go right xD
yeah I agree
But there's always a degree of ambiguity
@static zealot Buildscript ?
@pastel imp The difference in the two methods is not the command registration itself, but the components of it
For example both needs the command to be registered, either through command map or what
But the big difference is while one handles the requirements etc in itself, the other requires it to be registered elsewhere
just as a key note, registration of my commands is handled automatically via a form of classpath scanning
I assume the same canโt be done for mf by default, as the command class doesnโt store itโs own command? What I mean by that, is itโs registered like getCommand(โtestโ).setExecutor(new MFTestCommand());
that is bukkit api ^ but in the context pretend itโs mf api
commandManager.register(new CommandHat(configManager));
so โtestโ isnโt stored in mftestcommand, but โtestโ is stored in my testcommand, so registration can be automated
or am I wrong?
Yeah, i'd need to be done like commandManager.register(new MfTestCommand())
I could make it be registered from classpath, but that'd remove the dependencies stuff
Unless used Guice or something like that for dependency injection
wait so then how does mf know to make mftestcommand respond to โtestโ?
ye that's another thing...
what BM? you want my build.gradle?
dependency injection
@static zealot yep
@prisma wave you Implement the all the maven logic your self?
here you go
like Snapshot Artifact
Read POM
Because if I know, when is snapshot, the Jar is located in the name-version-date
Pretty cool
When the command is registered an instance of bukkit's Command is created and registered in the command map, this will handle all the commands stuff with the normal onCommand(CommandSender sender ..), once the command typed is the one registered or subcommand it'll invoke the method from the stored mf command
I think Iโve just got a fundamental misunderstanding of mf
In a way it's more like a wrapper
@static zealot you got anything special in your settings.gradle?
never changed it
@astral quiver yeah, all that is handled in common-lib
rootProject.name = 'WorldTeleport'
I'll probably repurpose it to a general maven library
Weird
@astral quiver does 0.0.26 work for you?
I mean I kinda know what it was. well what it said it was. no idea what it means :)))
it recommended me to turn it on for PAPI as well, did it and now everything is back to normal
yeah it does
ah ok
I'm just saying that's what it "recommended" just click accept or whatever and it works xD
no idea when I turned on offline mode. does it automatically turn on if your internet stops working or something ?
yeah I moved and I was without internet for a day and I just did some random things in IIJ. probably I pressed or did something then
yep yep
Awesome
yep. ty ty
that's it: https://github.com/knightzmc/pdm/pull/20
Hope you do not hate my big code
with fold, filter, and stuffs
๐
btw this is all I have to do on plugin enable right? kotlin val dependencyManager = PDMBuilder(this).build() dependencyManager.loadAllDependencies()
no
huh?
use loadAllDependencies().join()
because loadAllDependencies will return a CompletetableFuture
No problem, glad I can help
with join() will block until download the PDM downloads and loads everything to you use
Appreciate all your contributions :)
: )
sorry!
I have a crazy idea for PDM, insert the new PDMBuilder(this).build().loadAllDependencies().join() on the top of the Plugin onLoad
using ASM
๐
Crazy idea
Oh nice
He did it with the class so dependencies were loaded before plugin initialisation
oof some people be like: flexing IJ Ultimate
๐
ugh do I still use gradle shadowJar to build the jar? when using pdm
no
gradle pdm ?
yep got it
then just gradle build
Error?
1 sec
before I do this please do not laugh at how ugly it is. I already know ๐ฆ https://paste.helpch.at/umebohiniq.cpp
You gotta do PDM loading first
oh
I still use shadowJar because I relocate the dependencies using it
Also if you're using kotlin you need 1 of the Intrinsics workarounds
Eg the Elvis operator / !! / Doing everything in 1 line
wait so first in onEnable or just at the beginning of the class ?
I recommmend you add it at the onLoad
onLoad and doing it on 1 line works for me
val dependencyManager = PDMBuilder(this).build()
val onLoad = dependencyManager.loadAllDependencies().join()!!``` ?
you do not need this
I use like this:
public MyPlugin() {
PluginDependencyManager dependencyManager = PDMBuilder(this).build()
dependencyManager.loadAllDependencies().join()
}
or you can add to the first thing in your onLoad
@static zealot use !! on build(), otherwise Kotlin will try and null check it
yeah it will say that
Basically kotlin tries to null check things, even if it's unnecessary
And the null checks use a class that doesn't exist yet
The easiest workaround is to do everything in 1 line
Good morning Niall
@jovial warren mainly for future changes. so if I added a new capability the previous ones would already have it, and id have to change them
as for your second question i've only just thought about that. It seems to work for now at least... i can probably move it all to on enable if any issues happen
i am pretty sure there's a better way to do that
@prisma wave As always, you were right. I completely forgot thatfoldwas a thing
What should I call my IntelliJ plugin? I'm thinking "MineCode" or something
zwhats it do
Starts a mc server to test the plugins you develop in IJ with directly in IJ
and enables hotswapping
oo fancy... ive been doing that manually up til now...
from this report, is the lag source PrisonMines? https://spark.lucko.me/#FQGisFH5nZ @prisma wave
@empty flint sounds good
why are spring beans so inconsistent lol....
Like 50% of the time I turn my bot on it registers the listeners and the other 50% it just does nothing
Baked beans
ha ha very funny ex dee
bruh im literally sitting here restarting my bot until it decides to register the listeners
@quiet depot How would you approach dynamic listener registration (ie. a user specifies PlayerJoinEvent to be registered, then it'd do some magic and register that listener which would fire a Frozen equivalent of that event), doable or nah?
Class generation 
it's probably an incredibly bad idea
wat
But you could use something like cglib to dynamically generate classes that wrap the event or whatever
Not real sure what you're asking tbh
Well I can't think of anything else other than legit just having a boolean on each to see if it get's registered
cglib is old and shouldnโt be used
Doesn't guice use it?
consider something modern like bytebuddy
guice maintains their own ver iirc
of cglib
so they get a free pass
also guice is old stuff
probs made before bytebuddy was a thing
anyway no, donโt use code generation for this
while kinda iffy, Iโd honestly just have an eventhandler for every event you wish to support
that may be an issue to support across versions tho
so maybe a dynamic solution (such as code gen) would be preferred
if you go that route, I wouldnโt generate event classes like bm suggested, Iโd add some code to call your own event handler when any event is run; a single place
that way code gen is only done once, at startup, and itโs as little as possible
I'll read more about it, I'm just experimenting right now so wanna try obscene things 
Soooo
If it's a message, return something like this AJ
"Object key '$key' has not been found within 'messages.yml'!"
I wish Java had templates lol
Thoughts?
class FrozenJoinListener(private val registration: ListenerRegistration) : ActionListener {
@Subscribe
fun onEvent(event: FrozenJoinEvent) {
println("Executed @${event.eventName}")
registration.responseRegistration.call(
ActionResponse(
event.player,
null
)
)
}
}
(null cause I haven't set it up yet)
ish yea
It's all ugly af right now cause you I'm big brain and will probs do multiple iterations before I settle on something
Lol
How can I return from a task(using Aikar's TaskChain) so it returns from a method?
Location groundLevel(Location loc)
{
return Tutplugin.newChain().async(() ->
{
for (int i = 0; i < 1000000; i++)
{
Tutplugin.newSharedChain("groundLevel").async(() ->
{
Material block = loc.getBlock().getType();
if (block == Material.AIR)
{
loc.subtract(0, 1, 0);
}
else if (block == Material.GRASS_BLOCK)
{
return loc;
}
}).execute();
}
}).execute();
}```
lol, IJ
_root_ide_package_.com.github.frcsty.load.Loader
oof
why my bean not happening
because you are one
Everyone is using Kotlin here, this is very nice
Always
because you are one
๐ฆ
My command registration bean happens but my listener registration doesnt
Whats wrong with the beans?
broke
Show where you define each bean
@Service
class ListenerRegister @Autowired constructor(
private val attachment: Attachment,
// A shit ton more
private val jda: JDA
) {
@Bean
fun listeners() {
println("Registering listeners")
jda.addEventListener(attachment)
// A shit ton more
}
}```
@Autowired constructor is redundant btw
wait really
๐คฆโโ๏ธ
@Beans are used for defining things that return things, to be dependency injected
ive got other beans that work that dont return anything lol
use @PostConstruct to make that method run when the @Service is being constructed
Also i'm not sure, but is @Configuration required specifically for registering beans?
Elara > Kotlin
Awesome then its the same as Service, just for clean I guess
GCode > Elara
๐
Spring and JDA ๐
@prisma wave I had a look at Elara last night, and tbh, it's actually not that bad
Spring is in everything
you're not a pro compiler designer though
Lol you could literally use rust
But is more build your own
@prisma wave make your compiler in C++ so it runs really fast
no
Rust >>>
you make your compiler in the language youโre making
Go is fast
how fast is elara?
N/A
well
Lol
imo you should make your elara compiler, in elara
We will eventually
But you have to write one in something else first
it's like the chicken and the egg
ye, go is fine for the initial
will u carry on elara even if u dont win
Very exciting
yep
is there a prize?
$10000
it's like the chicken and the egg
So BM, what was first?
10k ๐ณ
Do you check the Kotlin Multiplatform Mobile yesterday?
ยฏ\_(ใ)_/ยฏ
do you remember my suggestions?
make an IntelliJ plugin so that it is properly recognised and syntax highlighting works as well, or something like that
Some of them
Do you know how many chicken nuggets you could buy with that
considering thereโs a prize, might be worth reevaluating them
Atleast 5
because thereโs some serious inconsistencies
Yeah I think it is a little inconsistent right now
is there a spec written?
Nothing formal
is everything at least there?
I started writing a grammar but then realised it was a waste of time
also what is it with you and programming languages
If my knowledge of parser
Most of it is in the ANTLR grammar I wrote a while ago but we've changed some things since then
also what is it with you and programming languages
@jovial warren they're cool
Is basically not exists
But write IntelliJ plugins is not hard
That's a guide to how to add custom language support to IntelliJ
also does it have proper function type inference?
something that Kotlin lacks that kinda triggers me
It's getting better the type inference in the 1.4
yeah it is
Call reference update I really like
so bm, is there a spec that contains everything? idc if itโs formal or not, so long the info is there
cuz if there is, might make a pr
Was kinda annoying to see that a function supports but because is not the same type you can't fit on it
Elara is actually pretty cool
Great job Alex
Ty :)
although it wasn't just me
Yugi did most of the parser and katsu made most of the original lexer
i just did most of the design and finishing touches
have u spoke to sx about elara since 
๐๐ ๐คฃ
The design is pretty
The one thing I do not like is be able to use and not use parentheses to call
This is a inconsistent that groovy has that I don't like
i quite like the way u can call without parens
Because I hate see a code base with the two types of call
but in lots of cases it can be a lot cleaner
tbh the only time u would use the parens is for calling without params
yeah and if there's any ambiguity
so when u do call the function, its easily noticeable and then when u have a param it looks cleaner
they already are
I want to break my computer every single time that I go to the maven central to peak some dependency and it's returns in the gradle format that NO ONE USES
oh the group: blah @astral quiver ?
Ah that
disgusting
Yessss
I thought you said gradle bad -.-
that's the most annoying part, compile
I mean, in DSL, the separated format looks better imo
since it's just implementation("group","artifact","version")
Gradle Is beautiful, gradle is my love
๐
Yessss
though some people think Kotlin DSL is crap because it is really verbose
cough @prisma wave cough
It's getting better
Groovy DSL bad Kotlin DSL good
The old tasks system
groovy dsl isn't a thing
groovy good
it's just how gradle is supposed to be used
Kotlin good boy from papa
but one's good and one isn't
@prisma wave in your subjective opinion
The two are good
slower than groovy
Groovy is ew though
But that fact is that Kotlin DSL was a crap tooling but was one
