Announcement

Collapse
No announcement yet.

Ubuntu Developers Discuss Using Mono AOT

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Ubuntu Developers Discuss Using Mono AOT

    Phoronix: Ubuntu Developers Discuss Using Mono AOT

    Ubuntu developers are currently exploring the possibility of using Mono AOT to reduce start-up time, allow for better memory sharing, and for greater performance optimizations...

    http://www.phoronix.com/vr.php?view=MTEwMTg

  • #2
    For everyone's sake, just get rid of mono!

    Comment


    • #3



      obligatory because there are certain words that create a mess everytime someone mentions them. some are Mono, Pulseaudio, Systemd, Lennart Poettering, Microsoft, network transparency etc

      Comment


      • #4
        They can do whatever they want to do with mono in repository, but get rid of it on default installation.

        Comment


        • #5
          Mono is good

          Mono is good. AFAIK its not lagging far behind Microsoft's .NET framework implementation.
          Mono is full open source under MIT, LGPL, GPL.

          C# is a Ecma standard, ECMA-334.

          As I understand it, C# is faster than Java, Python, Perl, Ruby, PHP, etc.
          C# is lot easier and friendlier to code in than C, C++, Objective-C.

          Someone should port the Java Class Library to C#.

          Comment


          • #6
            They could do it to Java too, if only gcj supported any of its GUIs

            As I understand it, C# is faster than Java, Python, Perl, Ruby, PHP, etc.
            Sure it's faster than interpreted languages, but lost to Java last I checked.

            C# is lot easier and friendlier to code in than C, C++, Objective-C.
            Hell no. But opinion question anyway.

            Someone should port the Java Class Library to C#.
            Double ewww.

            Comment


            • #7
              Originally posted by curaga View Post
              Sure it's faster than interpreted languages, but lost to Java last I checked.
              AFAIK Ximians project to port Android from Java to Mono shows the Mono port to be significiantly faster.

              Originally posted by curaga View Post
              Hell no. But opinion question anyway.
              No more buffer overflows, memory pointers, etc.

              Originally posted by curaga View Post
              Double ewww.
              For people who like C# but oppose .NET, this would be .NET-free C#.

              Comment


              • #8
                Glad they're talking about faster startup times for Mono apps instead of faster startup times of Ubuntu Desktop by somehow using Mono.

                Originally posted by uid313 View Post
                Mono is good. AFAIK its not lagging far behind Microsoft's .NET framework implementation.
                Mono is full open source under MIT, LGPL, GPL.

                C# is a Ecma standard, ECMA-334.

                As I understand it, C# is faster than Java, Python, Perl, Ruby, PHP, etc.
                C# is lot easier and friendlier to code in than C, C++, Objective-C.

                Someone should port the Java Class Library to C#.
                I'm sorry, Mono will always lag behind .Net. There will always be bugs and unimplemented features unless you're compairing to older versions of .Net, and there's still the problem of the windows-only extensions (forms for example). Mono have to develop in the same direction as Microsoft .Net which probably means even more "easy-to-use" (for Windows programmers) Microsoft-only features. In the long term the core of Mono/.Net will only become as good as Microsoft allows it to be. I'm sure there's a neat programming language in there, but why go for a programming environment that is more or less controlled by Microsoft, which are 100% sure to use it to promote Windows?

                In my experience with getting .Net apps running in Wine with the help of Mono I'd say that almost 100% of the .Net2.0 apps works, about 75% of the .Net3.0/.Net3.5 apps can be made to work and less then 50% of the .Net4.0 apps works. It's far easier to get easier to get some random C/C++ binary working in Wine then .Net4.0 apps. Java/Perl/Python apps are almost trivially easy to get in some working order since you'll have the source code available.
                Last edited by a7v-user; 05-12-2012, 11:03 AM.

                Comment


                • #9
                  You dont have the source for a java program any more then you do for a .net porgram.

                  Comment


                  • #10
                    Originally posted by uid313 View Post
                    AFAIK Ximians project to port Android from Java to Mono shows the Mono port to be significiantly faster.
                    Yes, it's faster than Dalvik. Dalvik != Java, Dalvik also != OpenJDK (hotspot).

                    No more buffer overflows, memory pointers, etc.
                    Instead it has its own problems, like untraceable memory leaks, horrible, verbose syntax, being a bytecode language without any of the benefits (no way to addess objects by their name, ie a string. No the reflection/introspection/etc extensions don't work for this.), slow startup (same as Java), completely illogical parts like "using", no macro processor at all, etc etc etc.

                    Comment


                    • #11
                      yes about dalvik. remember that google developed dalvik to address the specific need they had. openjdk(sun's opensource release of their java ecosystem, you must remember there are different javas out there just like mono is a type of .net) is developed with the understanding that its probobly gunna be run on a desktop or a laptop or a blue ray player or soemthing that will have 128 meg or ram or more and a floting point proccessing unit. the company google bout that was making android started back in somehting like 2003 and started to have soemthing to show in around 2005-2006. think about what a phone had at that time. you had less than 128 meg of ram. an arm5 or less proccessor that had no bells and wistles to make floating point or anyhting like that easier, and you had like 128 meg of storage at best. that is the envronment that dalvik was designed to support. it wasnt designed to be fast but to be really efficient. java EM (sun had a special, much more proprietary ecosystem of java for the embedded phone market, an this is the basis of much of oracles case against google) was what dalvik was ment to compeate with. so compairing mono, a fully fleged speed optimized platform to the dalvik interpreter isn't a fair comparison. mono wont run on the things dalvik will.

                      one could argue that with the new cortex based asic's with floating point proccessors and 512-1 gig memory and 4-8 gigs of storage, we are geting into the realm of full fleged run time environments where openjdk's hotspot intermriter would thrive. however, oracle is really trowing a stick in that wheel. actualy there was a bit of news (more like non news if you really think about it) that came out just a couple days ago. kinda suprised micheal hasnt mentioned anything about that. whatever though, there wasnt any crappy beer involved so i guess it didnt catch his attention.

                      Comment


                      • #12
                        Originally posted by 89c51 View Post
                        obligatory because there are certain words that create a mess everytime someone mentions them. some are Mono, Pulseaudio, Systemd, Lennart Poettering, Microsoft, network transparency etc

                        Mono <--- legal shit storm just waiting to happen. Play with MS and you're sure to get burned.

                        DO NOT MESS with my network transparency! 98% of my work is done over the network.

                        Comment


                        • #13
                          Originally posted by curaga View Post
                          horrible, verbose syntax
                          Sure, it can get verbose, but it's far better than java and I'd say about on par with C++.

                          being a bytecode language without any of the benefits (no way to addess objects by their name, ie a string. No the reflection/introspection/etc extensions don't work for this.)
                          Can you go into details of this? Why doesn't reflection work for you? You can certainly iterate through the properties of an object and return just those that are strings if you want. Or did you mean looking up a field by it's variable name? Of course you can do that - the API is pretty ugly, but it's obviously possible.

                          slow startup (same as Java)
                          That's the point of the AOT compiler, to get rid of the startup overhead.

                          completely illogical parts like "using"
                          I'm not sure why you find it illogical, but even if you do it's completely optional. "using" is just a syntax shortcut you can replace as follows:

                          using (IDisposable d = new X()) {
                          //statements with d in scope here
                          }

                          IDisposable d = new X();
                          try {
                          //statements with d in scope here
                          }
                          finally {
                          d.Dispose();
                          d = null;
                          }

                          no macro processor at all
                          Why in the world would you want one? Getting rid of macros is a positive feature of the language, not a negative one.
                          Last edited by smitty3268; 05-12-2012, 03:42 PM.

                          Comment


                          • #14
                            Nice how you skipped the memory part No I don't want my app leaking a meg per second until the GC sees fit to come clean things with a gig or two spent. Causing a huge pause, of course.

                            Originally posted by smitty3268 View Post
                            Sure, it can get verbose, but it's far better than java and I'd say about on par with C++.
                            Equally bad to Java and worse than C++, IMHO.

                            Can you go into details of this? Why doesn't reflection work for you? You can certainly iterate through the properties of an object and return just those that are strings if you want. Or did you mean looking up a field by it's variable name? Of course you can do that - the API is pretty ugly, but it's obviously possible.
                            I had this one case where I needed to dynamically handle some 500 checkboxes. So of course I wanted to address them by their name, dynamically generated string, at runtime, "checkbox001" and so on. Given that the language is not compiled to machine code, I expect it to take advantage of that and so support features like that, by default.

                            In that case I couldn't find a way to make the reflection etc work well enough, and had to insert a huge kludge (Dictionary binding the strings to object names, IIRC).

                            I'm not sure why you find it illogical, but even if you do it's completely optional. "using" is just a syntax shortcut you can replace as follows:

                            using (IDisposable d = new X()) {
                            //statements with d in scope here
                            }

                            IDisposable d = new X();
                            try {
                            //statements with d in scope here
                            }
                            finally {
                            d.Dispose();
                            d = null;
                            }
                            First of all, that's illogical by itself in a language that shouts loudly "no you don't need to mind memory with me". But what I meant more was the "include" replacement.

                            I can type
                            using System.blah;

                            And then use those things by typing "System.blah.foo.bar.xyzz.something". Overly verbose.

                            Now, why can't I type "using System.blah.foo.bar.xyzz;" and use the objects directly as "something"? Illogical. That works for some parts and not others.

                            Why in the world would you want one? Getting rid of macros is a positive feature of the language, not a negative one.
                            Because of the mentioned above over-verboseness and "using", among other ugly parts of the language.

                            Comment


                            • #15
                              Originally posted by curaga View Post
                              Nice how you skipped the memory part No I don't want my app leaking a meg per second until the GC sees fit to come clean things with a gig or two spent. Causing a huge pause, of course.
                              Memory leaks are not untrackable, but they can get complicated and I think that is a legitimate complaint to have. C# should be able to make that simpler.

                              Equally bad to Java and worse than C++, IMHO.
                              Completely disagree. There's no comparison at all to Java, just look at event handling code as a prime example. C# brings in a lot of functional programming options as well, with the newer versions. Like an .OrderBy(x => x.Id) method you can use easily on any collection, etc.

                              I had this one case where I needed to dynamically handle some 500 checkboxes. So of course I wanted to address them by their name, dynamically generated string, at runtime, "checkbox001" and so on. Given that the language is not compiled to machine code, I expect it to take advantage of that and so support features like that, by default.

                              In that case I couldn't find a way to make the reflection etc work well enough, and had to insert a huge kludge (Dictionary binding the strings to object names, IIRC).
                              I'm not sure why you had trouble with this.

                              Controls.FindControls("name", true);

                              That's with the MS APIs, maybe you were using GTK bindings or something?

                              But what I meant more was the "include" replacement.

                              I can type
                              using System.blah;

                              And then use those things by typing "System.blah.foo.bar.xyzz.something". Overly verbose.

                              Now, why can't I type "using System.blah.foo.bar.xyzz;" and use the objects directly as "something"? Illogical. That works for some parts and not others.
                              Umm, that's exactly what you do.

                              using System.blah.foo.bar.xyzz;

                              new something(); //where something is defined in namespace System.blah.foo.bar.xyzz

                              is correct. If there is a conflict, such as 2 classes in different namespaces that have the same name, then you can even redefine one of them.

                              using something2 = System.blah.foo.bar.xyzz.something;

                              new something2();


                              Because of the mentioned above over-verboseness and "using", among other ugly parts of the language.
                              I'm starting to think you just don't know how to program in C#, and are assuming a lot of things to be true that aren't.

                              Comment

                              Working...
                              X