-
-
Notifications
You must be signed in to change notification settings - Fork 31
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Release beta #613
Comments
Anyway I can help? I have been watching this repo for a while and it seems interesting, so I want to contribute. This is my first time contributing here and I wanted to help with some simple issues to get my feet wet. |
Hey :) Well, at this moment I'm developing quite breaking rework of packages and modules as you can see: #617, so I don't recommend contributing to this repo until I finish it (1 or 2 weeks I think). If you want to start I'm pretty sure you could start with detecting and fixing problems that affects the language environment such as installer:
By saying all of it I mean there is just a lot of work and small details that should be fixed in literally every repository. |
Hi, and thanks for the suggestions. I'm not sure if I can start testing Panda quite yet... But I have a couple of questions...
|
Panda is my hobbyist side project developed for a few years. I had some ups and downs, but in the end it is still moving forward. The purpose of the language is to fill the scripting languages area around the JVM and to provide convenient tools for other DSL implementations (example: Light). You have to be aware of a fact, that it is not just another implementation of a compiler that converts some kind of "new revolutionary syntax" to bytecode with a fancy sdk and in the end the internals does not really matter. Developing such a language is kinda boring and there is a bunch of projects like that. Panda is written from the ground up, so besides the interpreter, there is also a new runtime abstraction. Thanks to the JVM flexibility, Panda should be quite good complement for any application that requires some kind of extension system (tests, plugins, dsl, etc.) without any need of generating bindings for the whole API. At this moment that's a Groovy kingdom, but I'm looking for something more suitable for scripts and a much safer. The second niche is just a full-scripted environment powered by the dedicated package manager, where we can just launch a compilation-free, interpreted application (just like e.g. node with npm). |
Nice ! So this language is a hobbyist language that is designed to sort-of "compete" with Groovy. About the compiler bit, If you want to build a good language but can't build good parsers (like me), you can just strap an ANTLR frontend to an ASM + Java backend. That is what I did with my language Cylvre (which is currently under active development). I wish to take Cylvre to the mainstream as a language that is simple to use. I feel like we are going off topic. I think I may be able to help Panda after the breaking changes are done. |
Groovy is just the closest language that may be even considered as an alternative at this moment to be honest. I'm aware of tools such as ANTLR or LLVM, it's just not a subject of my interests. The most interesting process is to develop these internals - the language is just a side effect of their proper implementation. I've tested some crazy ideas during the indev phase, and I'm pretty sure it broadened my horizons and knowledge related to the topic 😛 |
As far as I have seen, Panda looks like a simplified and revamped Java 😃 . |
Yup, the |
Is it too early to help by providing IDE support for Panda? |
Well, it depends. The general shape of the language is pretty stable right now and any updates related to some already implemented features should be cosmetic. In the past I was playing around IDE concept: Lily At this moment I don't maintain such projects, just because it doesn't contribute to the development of Panda directly. The discussion about the IDE support is important and I think it might be a good idea to at least try to provide some simple tools that integrates with VSC or IntelliJ. |
I can help by providing IntelliJ support. Personally, I think that IDE support is crucial in the early stages. It helps with the adoption of the language and early adoption is crucial for language to get of the ground. Sorry to bring this up again and sorry if I sound rude, but why didn’t you reply when I asked if you could help me with Cylvre? |
Well, the IDE support is kinda pointless when you can't really develop any application in a language :) You have to be aware of a fact, that nobody really wants a new language, so there is no point to invest time in various related side projects as long as the language does not really work or offer something new. Of course, when you have a lot of people around the project, you can afford it. I've resolved a couple of issues yesterday in different repositories and didn't really pay attention to conversations around them. As far as I see you've removed the message?
I'm not in a position to develop such a project. Beside of the fact, that I'm quite busy at this moment, I also don't really enjoy the process of generating another language using tools that I've mentioned:
To be honest, creating a language is kinda simple these days. There is a bunch of tools that can do almost everything, so you just need to combine them. It's great exercise for a developer, to get a taste of how language really works, but it's not really engaging me at this point. |
It’s okay, I started this project to help people and to learn how languages work. I’d love to help Panda if there was anything that I could help with (other than IDE support) |
By saying Apart from the projects mentioned above, if you'd like to start with Panda internals, I think I'd start with syntax. You can start reading sources related to an implementation of some statements or expressions, and then you can just report some missing features or report strange things in API to start a discussion around it. It's kinda hard for me to estimate your impressions of dealing with this code, so I think the best thing you can do at this moment is to look at everything with a fresh eye. |
Yes. By making the transition from mature language to new language as smooth as possible for the user, it will keep them coming back for more. Although my skills as a Java developer are not “professional”, while implementing my language I read a lot on compiler theory. I’ll let you know if I find anything useful. |
Hi there! I’m actually CodeUnstable. ( had to create new account due to a couple problems ). Anyway, how’s your language doing? I see it has come quite far since I was last here. |
Hi :) At this moment I'm kinda focused on cdn and hub to provide some kind of basic package-registry infrastructure within package manager, but I was quite busy lately, so there is still a lot to do. As soon as I'll finish it I think I'll focus on a final implementation of types, its builders and the builtin std, because the current one is such a mess xD |
Hi! :D. For any packages, couldn't you create a language support plugin for build system/package manager like maven or gradle and upload and download packages from there? Or, are you doing this so that all panda packages can be located here and is hence more convenient to locate and get the package/publish the package to ? |
Panda is interpreted language, not compiled one, so integration with build systems like maven or gradle is just not my target at this moment. By default, all packages should be hosted through services like github, because it's just a right place to do it. Hub keeps references to repositories with Panda sources and then lists them in the one place. It's something like https://crates.io/ |
Oh... OK. Once again, thanks for providing info. I'd love to contribute sometime soon. EDIT: I've taken a look at the guide and noticed that instantiation of types follow the Java method i.e. : TypeName typeName = new TypeName() In my opinion, the first declaration of By omitting the type declaration, maybe even the new keyword, we can get something that looks much cleaner and more readable without boilerplate typeName = new TypeName() // we already know that typeName is of type TypeName from the constructor or typeName = TypeName() //This is a bit more ambiguous but ok... I guess. This is my opinion though, so you can ignore it if you want. (I've seen this being implemented in Kotlin for reduced boilerplate and more concise code) |
Yeah, you can drop the first type using |
Hi! Do you mind explaining how you built the interpreter to produce JVM bytecode? |
I didn't. It's not a compiler which just converts it to bytecode. I use bytecode generation only if I need Java interop in some places. Atm it's only used to generate stub types, but as we talked in asm related issue, I need to a little bit redesign this topic. I've made bytecode-free PoC, but it's just not the best way for the release candidate. I think I'll generate much more bytecode in the future than I thought, because I think I can do it on language implementation level and it won't affect the framework. |
Ok. I just wanted to know. Thanks for the info! 😃 |
According to:
Requirements:
The text was updated successfully, but these errors were encountered: