-
Notifications
You must be signed in to change notification settings - Fork 66
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
Project Mercury: Another version of VB #491
Comments
I would it give it a try. I'm currently evaluating Xojo, AKA Realbasic. |
I might be game. Since the Roslyn VB compiler is Open Source, I would have thought that forking it to a better supported alternative would be quite feasible, although that alternative would (presumably) need to also be open-source. |
I believe we (the VB community) are going to HAVE to do something ourselves. It's becoming quite apparent that we're not going to get much help from Microsoft to keep VB on parity with C# or incorporate VB into a lot of the .Net Core going forward. I'm going to post another Issue with some thoughts on this. |
The implementation has started. |
Before putting a lot of effort I suggest you (@tverweij) to see the specifications and plans for .NET 5.0. One known plan is merging of Standard, Core, and Main .NET frameworks. Even if half of @AnthonyDGreen PoCs in VB are incorporated in VB of .NET 5.0, it would be great (if not JSON literals). |
@rrvenki: Where is that information regarding to VB? |
@rrvenki: and the effort is a lot smaller than you think; we already have out own IDE (Windows and Mac), support for VS and multiple programming-language implementations (including a 100% C# implementation) - that interact together within the same project and are all capable of doing all targets. Adding all C# functionality (and more) to VB won't therefore be that difficult either. |
@rrvenki: The most work is implementing the VB syntax and the specific VB things (like ByRef bahavior). As soon as that is done, it will be editable and compilable. |
To be more specific, all our languages have (just a pick):
And a complete aspect implementation wit AOP - see: https://en.wikipedia.org/wiki/Aspect-oriented_programming |
I am game! We need an alternative and we need a choice otherwise soon enough, we shall be faced with the choice to rewrite thousands of lines of VB Code in C# or some other language. |
@tverweij Commenting on a bunch of issues to spam everyone's notifications about your new not open source not free alternative that has these features is... a pretty spamming advertising choice. Please refrain? |
Just trying to provoke any (re)action from Microsoft to match it and start taking VB seriously again. |
please take a look at #498 to gather all the efforts. |
I support all projects that will give VB a future, but at this moment I am completely fixed on Mercury, as this project has almost reached the point that it can compile all VB code, followed by internal testing and a beta program. Mercury is not Roslyn based, so it won't interfere with your efforts. |
@tverweij |
@VBAndCs So adding that would affect all languages and things like that would break compatibility between different installs of those languages. So we are not adding that. But this toolchain supports Aspect Oriented Programming (see wikipedia: https://en.wikipedia.org/wiki/Aspect-oriented_programming and https://docs.elementscompiler.com/Concepts/Aspects/Cirrus) I for myself use some aspects in another RemObjects language (Oxygene Pascal) that replaces all .Substring calls to another implementation, does logging, and generates code in general. |
An update: |
Can't wait to put my dirty hands on it.
|
Can you implement this in mercury? |
Already done. |
Well done :D |
XML literals are the last on our list :-( |
@tverweij |
I build an aspect for that some time ago for our Pascal language Oxygene. |
It works like this:
This will enable our own testing software and the test methods are removed from the Release builds. |
In my idea, no need to attributes. Tests reside in a .tset.vb files, and methods are linked by name convention. The test clases and method are auto generated for every class and method added in the project. This will make testing fun. |
That is not an attribute - it is an aspect. |
testclasses and testmethods are also used in Microsoft.VisualStudio.TestTools.UnitTesting. |
No files, just methods. |
@Padanian |
From @AnthonyDGreen https://anthonydgreen.net/2019/02/12/exhausting-list-of-differences-between-vb-net-c/
Do you want us to implement this bug or just don't allow the + operator on strings? |
Add an |
No. And we WILL get breaking changes; as we are extending the language - add new keywords. |
From what I read somewhere using + for string concatenation is slower than using &. While it would be a breaking change (and a PITA), it's not that hard to scan and replace... I know cuz I've done it myself on a 750,000 lines of code solution. It's takes a little time and is mind numbing, but... :) I would recommend NOT implementing it. Cleaning up our code is a good thing. Painful though it might be. |
That is what I was thinking - I think we'll skip all string math for the first version, and see if it is needed in the future. If so, we'll implement it then. |
@tverweij |
Implicit conversion should only be widening, not narrowing. Because widening can not fail, while narrowing can. Fast coding is ok, but fast building bugs is not. But the code behaviour tests will be excuted soon, as old VB code should behave the same in mercury (unless we decided that we break some constructs, in which case it won't compile). |
Is Mercury going to implement a language server? It could then be usable from many different editors. Or is there at least some way to expose the information needed to construct a language server? |
@WolvenRA: But in Mercury, we dropped string math, so + will be exactly the same as &. |
@zspitz : No, but we have 3 supported IDE's; Visual Studio, Water - our own IDE on Windows and Fire - our own IDE on Mac. |
I once proposed to allow this alternative of Lambda in VB: |
I would seriously caution everyone from falling for RemObjects' misleading propaganda. While they and their fanboys here promise to support VB.NET's syntax [1] they will probably not support VB.NET's semantics. That is, code that used to do something will do _something else. That's exactly what they say about their implementation of Swift:
But the semantics are different [2]: Moreover, when I tried, their native target weren't even half-baked. When I tried it they didn't even generate PDBs. You couldn't even specify The idea is nice. The reality isn't as much. They have too small of a a team to actually make good on their promises to the point that sometimes they don't even try. That brings us back to "we support the full syntax but interpret it to mean something else completely". If you still want to invest heavily into that, go ahead. [1] "... full Visual Basic™-compatible Mercury language syntax will be available" https://www.elementscompiler.com/elements/mercury/ [2] https://docs.elementscompiler.com/Silver/DifferencesAndLimitations/ |
@conioh If the so called. Net team did not ignore the VB community for so long and attempt to downscale VB, Mecury would not be. People want to program with Microsoft VB; but alternatives to VB are appearing because Microsoft .net team is squeezing VB.Net programmers out... In this forum and in reaction to Project Mecury, people were being advised to investigate Xojo and other such products because .net team would not advance VB.NET since they are not "dog fooding" it or whatever. If I have to rewrite thousands of lines of code across a diverse applications portfolio, then instead of rewriting to C# or Xojo, I would rather try something that is closer to what I have already been using: that is the promise of Mecury. I do not expect it to be 100% compatible, but even if it gave 80% to 90% compatibility, it will be worth its salt. |
@salelele you're going way off topic here. Microsoft's behaviour and the amount of VB6 code you have and what not are irrelevant. This "issue" isn't really an issue for the vblang repo but rather an advertisement for a supposed alternative. This advertisement is misleading at best. Since people seem to be interested in the advertised alternative based on the false and misleading information provided I shared additional information on the alternative and its developers. Now the interested parties can make a better decision. If they still want to go for it, they're more than welcome. But since you told a long and unrelated story I'll comment on some of the things you said.
If you have VB6 code you should have obviously migrated to another language/platform than VB.NET. You should have used C# or even some non-Microsoft product. It was clear from the start to anyone who's even worked in to software development industry and got any clue about Microsoft that VB.NET isn't a priority for Microsoft and it's only purpose is to lure VB6 developers into the .NET ecosystem. Commenters were mad at Microsoft for their announcement in a recent blog post about VB.NET saying they basically lied in their previous announcement less than half a year ago. And that's true. Microsoft lied. But you fell for it despite all the warnings. So you're definitely at fault here too. You know how the common idiom goes? "Fool me once - she on you; fool me a gazillion times - ..." Migration from VB6 to VB.NET wasn't easy or problem-free and now you find yourself in need to make a similar migration once again. When RemObjects go out of business or decides to stop supporting "Mercury" or decides to drop one of their target platforms don't act all surprised. It's not like they have a team of about 3 developers and they're basically writing language front-end for LLVM but all the back-end side depends purely on LLVM good will. What? You think they wrote a WebAssembly back-end? You think they managed to understand what the hell is going on in the PDB format and generate PDB files? It's all LLVM. If being screwed over by Microsoft convinces you that you should put all your eggs in basket held by a low-two-digit employee company that's your business. Have fun.
You should have done that a decade ago. You're only delaying the inevitable. You're going to work on the migration and by the time you get everything perfect you'll have to move on to the next "something that is closer". Or not. Maybe in the last two years they made everything perfect, Mercury will be 99.9% compatible with VB.NET and RmObject will live on and support it for decades to come. Maybe. Do whatever you like. I'm just giving you a fair warning that:
Now do what you want. You don't have to convince me. Just don't forget to imagine me hearing "I told you so" when you find out you've been fooled gazillion and one times. |
@conioh : I don't know who you are, never saw you here before. No name on your profile. No email. No website. Your repositories are not VB. So I am not even going to react on this kind of trolling. For everyone else: |
Good to know that you're not simply a fanboy but rather an employee. Somehow I didn't notice it earlier. I'm sure that it's not because you tried to conceal this affiliation by writing "I talked to another company that builds programming languages about making a custom VB / VB.Net implementation" without that it's "we" as you now say.
Since you are unable to speak civilly this comment is being reported both to the repo owner and to GitHub. |
No, I am not an employee, but the owner happens to be a friend of mine,
You are really concerned about this endeavour aren't you? |
Yes, he is, and I will report him for threatening and harassing. |
My last reaction on this subject. Yes, RemObject is a relatively small company, but I have to name one of their products, namely Oxygene - former name : Delphi Prism. And as @AnthonyDGreen stated in his observations about VB:
So, there is no need for a big, multi-trillion company to support the language. The needed ingredients are knowledge, experience and the will to succeed. And they are all available. |
This repostiory is meant for discussion about the VB.NET language. This instead a product advertisement. As such inappropriate for this forum. Locking the thread. |
As I follow this GitHub board for a few years now, and did not see any improvements to VB or any feature request implemented, I talked to another company that builds programming languages about making a custom VB / VB.Net implementation that can compile all current code and extend it with (almost) anything that C# has (including unsafe) and most of the request done here (including mixing C# and VB.Net code in one project).
Edit:
This won't be a free implementation - think of a yearly fee of about USD 500,-
And this topic is to see if a second implementation of VB is feasible.
Development will be done in Visual Studio or in their own IDE on Windows and Mac OS
Supported targets will be:
If this was accomplished, who would be willing to try this implementation?
The text was updated successfully, but these errors were encountered: