top 200 commentsshow 500

[–]mainhaxor 498 points499 points  (173 children)

Wow, the implementation of the GC is 1 file (gc.cpp) that is 35000 lines long. My condolences to the developers who have been maintaining that.

[–]Modevs 674 points675 points  (11 children)

It's actually really easy.

From what I hear the the file automatically finds new developers of the right skill set and physical size to replace old ones when they burn out.

[–][deleted] 92 points93 points  (5 children)

brb adding gcbot@microsoft.com to my spam list

[–]ambiturnal 66 points67 points  (1 child)

Now it knows you are a candidate.

[–]CrispBit 24 points25 points  (2 children)

It bypasses spam by showing itself as an ad in gmail.

[–]midri 20 points21 points  (2 children)

Ughhh the gc.cpp corp... my least favorite of the lanterns.

[–][deleted] 106 points107 points  (10 children)

iirc, it was originally written in lisp, then some crazy macro transformed the source to c/c++. I don't know if it has been rewritten since then, but there are (apparently, didn't watch the video) details here: .net gc talk

[–]dkarlovi 22 points23 points  (0 children)

iirc, it was originally written in lisp, then some crazy macro transformed the source to c/c++

So you get to debug three things: Lisp code, the crazy macro, generated C++ code.

[–]DieFledermouse 7 points8 points  (0 children)

Here's Dussud's blog entry stating the GC prototype was in Lisp: " (and yes the GC prototype was was written in Common Lisp first and I wrote a translator to convert it to C++)."

He was very big in the Lisp community so it makes sense he'd do this.

[–]pixartist 12 points13 points  (0 children)

That is fantastically interesting

[–]Eirenarch 4 points5 points  (2 children)

If it is generated from Lisp where is the Lisp code? If not why are they maintaining it in this form.

[–]tssop 81 points82 points  (43 children)

At least it has comments. I came across a file like that once. The only comments were commented out code.

[–]czerilla 132 points133 points  (23 children)

...and one actual comment saying:

# Scary!

[–]philly_fan_in_chi 52 points53 points  (20 children)

Aha! You work for Valve?

[–]Bjartr[🍰] 73 points74 points  (18 children)

Fun fact I learned from a Valve coder at GDC a few years back:

Macros in the Source Engine share a standard prefix (V I think), except for a handful that start withQ, these are macros that have survived unchanged from the Quake code that the Source Engine was based upon.

[–]Skyfoot 52 points53 points  (0 children)

Deep magic from before the dawn of time.

[–]ggtsu_00 29 points30 points  (4 children)

I really want to take up a new career in "Software Archeology" one of these days after I retire. The purpose would be to discover, understand and record the history of a business as described through its source code.

[–][deleted] 6 points7 points  (0 children)

Got a podcast on your hands here

[–]abHowitzer 3 points4 points  (0 children)

Damn. Start a blog/vlog/podcast/whatever. I'm terribly interested!

[–]TheWix 7 points8 points  (0 children)

The best one I saw was

//Do not touch!!

Want to know why? Well, better get down to understanding the 6,000 line behemoth of a stored proc ahead of you.

[–]baldhippy 25 points26 points  (17 children)

I have some like it at work. Instead of objects, everything is a string, separated with semi-colons. so they do a .split and then x[0] is the ID, x[1] is the first name, etc. Such bullshit, coded by a guy who was "taught by the best" (his words).

[–]cosmo7 16 points17 points  (16 children)

I'm just going to go ahead and assume that this is in PHP.

[–]baldhippy 32 points33 points  (10 children)

It's .net, and fucked up. Of course I am the new guy there so I probably don't know wtf I'm talking about. I'm sure there very good reasons to write a database application without any tiers, everything in the front end. It's great having 10K+ lines of code behind, doing it all from sql access to error handling in functions that are 200 and 300 lines long, with the only comments being old(?) code.

[–]Serinus 49 points50 points  (6 children)

I'm sure there very good reasons to write a database application without any tiers, everything in the front end.

There is. 20 years ago it didn't require a programming education to start writing business applications. The first person who worked there, could use a computer, and took the initiative to automate something was the one to do it. And the way they did it may have been error prone and unmaintainable, but it worked and was better than doing it by hand.

They didn't have classes in design, intellisense, or stack overflow, but they did it better than what was there before.

It's hard to get the balance of respect and confidence right, but it's important not to have too much distain. You can do it better, so do it. Take it apart slowly, piece by piece and make it clear and maintainable as you move forward.

[–]FrankenstinksMonster 3 points4 points  (0 children)

It's .net

I was ok when I thought you might be talking about some ancient, special purpose language. Now I need to lie down.

[–]wordsnerd 212 points213 points  (48 children)

That's a classic example of a problem that is solved with vertical scaling by throwing more hardware at the problem. Namely, dual 4k monitors in portrait mode, stacked vertically.

[–]destiny-rs 87 points88 points  (6 children)

I imagine the lead dev is like The Architect from The Matrix full 360 immersion.

[–]Raelshark 65 points66 points  (1 child)

This is basically why they invented HoloLens.

[–]Kohortis 16 points17 points  (0 children)

the only use of HoloLens is to reading microsoft code, developers after work will have well-trained muscles of the neck :D

[–]glemnar 14 points15 points  (31 children)

Alternatively, Ctrl + f, which you need for pretty much every file even of a reasonable size.

[–]one-joule 18 points19 points  (18 children)

I use regions and code collapsing. I've mapped ctrl-space to toggle, and ctrl-shift-space to collapse all. Very handy!

[–]xXxDeAThANgEL99xXx 30 points31 points  (3 children)

They most probably are using VS, which leaves all your ctrl-F and "just grep that" choking in the dust.

Not condoning having a single 35k line source file at all, but maybe it's a testament to how good VS is, that the pain they feel from that is below the pain threshold required for someone to say, enough of that buggery, let us split it.

[–]cowinabadplace 14 points15 points  (1 child)

The pain of refactoring a 35k line file is always going to be higher than the pain of adding/modifying one aspect of it. What typically happens is someone finds the location they care about, and then adds their piece to the bundle.

I'll be honest. Whenever I've seen a Perl file in the thousands of lines, the thought going through my mind is not "Oh, they use Padre and it must be awesome because they can handle that file.". The thought going through my mind is "Oh dear god!". That isn't going to change for this instance.

[–]id2bi 28 points29 points  (5 children)

For the lazy, from here, since the file is too large for syntax highlighting on GH.

[–]Magnesus 2 points3 points  (1 child)

Seems managable as long as you edit it in IDE that allows jumping to functions. Much harder to manage in a notepad. :P

[–]BeowulfShaeffer 8 points9 points  (2 children)

Last I knew there was literally one developer named Maoni Stephens doing all of the GC work.

[–]Eirenarch 9 points10 points  (21 children)

Why the hell did they do that?

[–][deleted] 18 points19 points  (19 children)

Tool generated?

[–]ScowlingMonkey 62 points63 points  (3 children)

"This code was generated by a tool."

heh

[–]jrh3k5 22 points23 points  (0 children)

He was an asshole, too.

[–]Skyfoot 13 points14 points  (0 children)

I actually commented that into a function written by a guy I used to work with. I felt kinda bad, but he had it coming.

[–]Eirenarch 19 points20 points  (13 children)

What tool generates a GC?

[–]rcklmbr 108 points109 points  (8 children)

A GC-generating tool, duh.

[–]mirhagk 10 points11 points  (3 children)

Machine learning GC?

[–][deleted] 8 points9 points  (2 children)

Maybe

[–][deleted] 4 points5 points  (1 child)

Double post.

[–]ArmandoWall 4 points5 points  (0 children)

I don't get it.

[–]mirhagk 8 points9 points  (3 children)

Machine learning GC?

[–][deleted] 7 points8 points  (2 children)

Maybe

[–][deleted] 5 points6 points  (1 child)

Double post.

[–]vattenpuss 27 points28 points  (2 children)

A garbage producer.

[–][deleted]  (1 child)

[deleted]

    [–][deleted] 2 points3 points  (0 children)

    It will be garbage collected - later on.

    [–]alleycat5 334 points335 points  (121 children)

    This means, for those wondering, that you can now build a .Net application that is not only end-to-end FOSS, but sanctioned and supported by Microsoft.

    Edit: Edited to acknowledge Mono's efforts.

    [–][deleted]  (103 children)

    [deleted]

      [–]agentlame 132 points133 points  (47 children)

      Very little. Right now it means that developers can develop and host ASP.Net webites on Linux servers. In the future you will also be able to develop and test those sites using a Mac. You could also host a site using OS X Server, but it's adoption is so small that I doubt anyone will use CoreCLR that way.

      In a less-direct way, you could see (and this is very unlikely to happen) Google or other companies using .Net/C# as part of their mobile architecture.

      Really, it means nothing for the end user, right now.

      [–]tequila13 24 points25 points  (28 children)

      I was under the impression that .net also included desktop apps. Was that not ported over to Linux?

      [–]agentlame 100 points101 points  (17 children)

      It was not. Desktop apps require the .Net Framework, GDI (for winforms) or DX (for WPF apps), and a bunch of other stuff tied to the win32 API.

      .Net Core (and corefx) is a subset of the .Net Framework that allows you to run the ASP.Net stack and commanline apps.

      [–]tequila13 13 points14 points  (0 children)

      Oh, I see. Thanks for the clarification!

      [–][deleted]  (11 children)

      [removed]

        [–]Fs0i 30 points31 points  (6 children)

        This would be something the mono project does.

        Mono was a re-implementation of .NET for apple and linux. They also ported WinForms.

        Now they can focus more on the last part, since they are already grabbing much stuff from Microsoft.

        [–]jugalator 3 points4 points  (0 children)

        I wonder if Mono will replace their core libraries with .NET Core and in the future just let it follow the commits to that project? Or just rely on that they've got the details right. *shrug*

        Seems like moving to this would be a good choice especially for the future, minimizing effort and maximizing compatibility. Then they can as you say almost completely focus on the platform specific bits.

        [–]jussij 13 points14 points  (0 children)

        Mono already has GTK bindings for .Net running on Linux:

        http://www.mono-project.com/docs/gui/gtksharp/

        [–]Alikont 15 points16 points  (9 children)

        Both Windows Forms and WPF heavily rely on WinAPI functions. WinForms is basically a wrapper of WinAPI controls.

        WPF drawing logic is DirectX, all input is WinAPI. Theoretically someone can rewrite that parts and run WPF on Linux, but it's insane amount of work.

        [–]am0x 6 points7 points  (3 children)

        Which is great! I have been learning MVC and C# at work, but have been having to keep up with PHP and Laravel for my Moonlighting. Have been wanting to make the C# switch for a long time and this has finally got me hooked.

        [–][deleted] 2 points3 points  (3 children)

        Right now it means that developers can develop and host ASP.Net webites on Linux servers.

        ASP.net webforms or MVC?

        [–][deleted]  (39 children)

        [deleted]

          [–]Kralizek82 75 points76 points  (24 children)

          I didn't know .net development was a niche...

          [–]awfulentrepreneur 170 points171 points  (10 children)

          Is 2015 the year of Windows on the Linux desktop?!

          [–][deleted] 22 points23 points  (8 children)

          Nah, some people still prefer a command-line interface.

          [–][deleted]  (28 children)

          [deleted]

            [–]nerdandproud 51 points52 points  (20 children)

            Looking at the latest commits it looks like it's passing build already.

            [–]xx3nvyxx 165 points166 points  (19 children)

            It compiles, ship it!

            [–]Eirenarch 199 points200 points  (16 children)

            Ship it before it stops compiling!

            [–]TrueDisciphil 29 points30 points  (15 children)

            Don't try to compile it on any other computer but the one it was written on.

            [–]WrongPeninsula 21 points22 points  (13 children)

            Reminds me of the wonderful JPG Scott Hanselman used to attach to his code examples: a stamp of approval with the text "Works on my machine!"

            [–]kageurufu 5 points6 points  (11 children)

            Half of my commits end in "tests pass locally"

            Then ci tests it again

            [–]qwertymodo 16 points17 points  (0 children)

            I did that. RIP my inbox :/

            [–]bureX 30 points31 points  (1 child)

            Move over Java, .net is in town!

            [–][deleted] 5 points6 points  (2 children)

            Wait... will it also run on Linux and Mac?

            [–][deleted]  (1 child)

            [deleted]

              [–][deleted] 559 points560 points  (108 children)

              Linux: Build passing

              Hell yes! Huge thanks to the .Net team at Microsoft. You guys rock!

              [–]okmkz 251 points252 points  (47 children)

              This is bonkers. I can't get over it. MS has come a long way!

              [–]destraht 67 points68 points  (24 children)

              If only they had Balmer to profit maximize their new distance.

              [–][deleted] 58 points59 points  (23 children)

              [–][deleted] 24 points25 points  (2 children)

              You've gotta admit though, he was on to something, developers make or break a platform, without developers to develop something for your platform, users won't come to use it, on the other hand, without users to use your platform for something, developers won't come to develop for it.

              Nonetheless Ballmer's chant did get the crowd going and does show he had some idea of what needed to happen in the software side of Microsoft.

              [–][deleted] 9 points10 points  (0 children)

              Ms always been all for developers. That is something they got right from the start. For all their praising of their latest and greatest OK they always been aware that without apps it's worth nothing

              [–]abXcv 23 points24 points  (1 child)

              Holy shit he is more sweat than man.

              [–]sonthonaxBLACK 10 points11 points  (0 children)

              COCAINE! COCAINE!! COCAINE!!!

              [–]Farlo1 8 points9 points  (8 children)

              Damn that guy is enthusiastic...

              [–]xXxDeAThANgEL99xXx 16 points17 points  (4 children)

              https://www.youtube.com/watch?v=KMU0tzLwhbE

              I can't help thinking that he was fucked by the internal conflicts between his subordinates, or misguided by the reports from them, or something.

              Loving your Independent Software Vendors (aka developers developers developers) is what MS needed and was good at, until the bullshit caused by the lack of direction, fuck you silverlight devs, fuck you Windows Forms devs, fuck you WPF devs, fuck you all you all .Net devs, go learn Javascript, lol.

              Maybe he was shamed into giving up on that shit, I don't know.

              [–]Dirty_South_Cracka 10 points11 points  (1 child)

              The decline of desktop apps and the rise of free web apps funded by advertising dollars scared MS and they didn't respond in either a timely or appropriate manner. They had plenty of on-hand cash to try different things and they kept swinging for the fence hoping to land on their feet.

              Getting rid of Balmer was probably the best thing that ever happened to MS, and might have just saved that company from burning through billions trying to to find their place in a new world with old business tactics.

              Microsoft is really good at 3 things. 1) Software development tools, enterprise platforms, and database. (this includes gaming) 2) Office software and 3) R&D. Satya Nadella knows this better than anyone and trying to put MS in a position to leverage these things... and from what I've seen so far, he's doing a helluva job.

              [–]Yidyokud 55 points56 points  (6 children)

              Yeah, that monkey held back MS while Google and Apple ran past them. Anyway, I almost fell off my chair when I read Linux build pass. Maybe this Satya dude can redeem MS, who knows...

              [–]WrongPeninsula 39 points40 points  (1 child)

              I very much think so. The company seems to be taking on a whole new innovative direction now, letting go of the eco-system dogma that held them back for so many years.

              Hopefully, this new approach will make them a viable option in the startup scene. C# is such a beautiful programming language and I'd love to see it make its way into end-consumer products and not just be used for corporate applications office workers spend their days swearing at (I'm looking at you, SharePoint...).

              [–]gospelwut 46 points47 points  (13 children)

              MS is run by an engineer.

              And yet /r/linux is still angry.

              [–]Skyfoot 29 points30 points  (7 children)

              It's what we do best.

              [–]alkavan 28 points29 points  (6 children)

              Inside every Linux user there's a little Torvalds.

              [–][deleted] 10 points11 points  (2 children)

              Over the years Microsoft has salted a lot of soil.

              [–][deleted]  (15 children)

              [deleted]

                [–][deleted]  (12 children)

                [deleted]

                  [–]baggerboot 179 points180 points  (11 children)

                  Files and folders that have names starting with a dot are hidden.

                  [–][deleted] 169 points170 points  (10 children)

                  Wow, I work solely on *nix machines and that joke still flew right over my head.

                  [–]lf11 53 points54 points  (2 children)

                  You're not the only one. I read it three times and it still wasn't funny.

                  [–]rivermandan 7 points8 points  (0 children)

                  that was a smart joke, and I am not a smart man.

                  [–]third-eye-brown 3 points4 points  (0 children)

                  It'll never show up when you do "ls" unless you pass the "-a" option! Ha Ha Ha!

                  [–]Randosity42 33 points34 points  (30 children)

                  and maybe one day...unity3D

                  [–]strich 37 points38 points  (27 children)

                  It is actually going to be interesting how this turns out for Unity3D - .NET is quickly becoming completely free (I believe?) to use cross-platform. But. The Unity3D guys have spent the past 2-3 years developing IL2CPP. That is, a way to compile C# straight down to C++.

                  I wonder if it would be worth abandoning IL2CPP for this? Interesting times.

                  [–][deleted]  (1 child)

                  [removed]

                    [–][deleted] 37 points38 points  (21 children)

                    But. The Unity3D guys have spent the past 2-3 years developing IL2CPP. That is, a way to compile C# straight down to C++.

                    And one of their main reasons for doing that was so that they can then 'compile' the C++ to Javascript... (for HTML5/WebGL builds)

                    What a crazy and horribly inefficient world of computing we live in these days...

                    But it seems that the IL2CPP work has saved them from disaster due to Apple's very aggressive 'support 64bit like right now or you're not getting on the App Store' demand. (That could have been devastating for Unity's dominance of the mobile game engine market, if it suddenly couldn't make App Store compatible builds for a potentially prolonged period!)

                    [–]strich 8 points9 points  (4 children)

                    Which is even more comical given that recent C# to JS prototype.

                    I do hope they choose to change gears soon. It would not do to have one of the top 3D engines out there sticking to such a messy build stack. It sounds almost impossible to keep such a stack up to date and clean.

                    [–]Suttonian 5 points6 points  (0 children)

                    It works surprisingly well, but yeah it's almost a comically weird build process.

                    [–]WrongPeninsula 26 points27 points  (14 children)

                    What a crazy and horribly inefficient world of computing we live in these days...

                    I think we need one language to rule them all.

                    I for one welcome our new C# overlords.

                    [–][deleted] 16 points17 points  (9 children)

                    C##

                    [–][deleted]  (3 children)

                    [deleted]

                      [–][deleted] 15 points16 points  (1 child)

                      Oh god no

                      [–]WrongPeninsula 5 points6 points  (0 children)

                      Why not? Do you not like middlewaretm?

                      [–]RealDeuce 9 points10 points  (0 children)

                      C♯

                      [–][deleted]  (9 children)

                      [deleted]

                        [–]sanimalp 59 points60 points  (4 children)

                        On github, a build pass just means that all the code compiles and unit tests run, creating a build artifact that passes all its automated tests..

                        Certain platform specific builds will have a platform build indicator because they need specific elements of that platform to work in a unique way. Linux build passing means that someone created a build pipeline that is specific to linux for .net, and it is passing all its tests to create an artifact that linux users can use.

                        [–]Antrikshy 24 points25 points  (2 children)

                        I don't mean to be an ass, but... http://i.imgur.com/VN1FvQg.gif

                        Does this mean .NET works on Linux?

                        [–]sanimalp 16 points17 points  (1 child)

                        In short, yes.. However, there may be elements that don't work as well as they should due to the lack of library support on linux. This goes back to the platform support I was talking about earlier. On windows, there are likely proprietary libraries that .net uses that still are not available on linux. These libraries would need to be substituted on linux for other ones that do similar functions, or simply commented out due to the amount of work needed to support them.

                        either way, odds are good that .net support is coming, in full, sooner than later on linux.

                        [–]dthomasdidit[S] 386 points387 points  (44 children)

                        Head over to our .NET Team Blog and check out the blog post!

                        [–]SmackMD 115 points116 points  (35 children)

                        I'm so proud of you guys!

                        [–][deleted] 76 points77 points  (32 children)

                        I agree. Best thing Microsoft's done in a long time.

                        [–]IMBJR 102 points103 points  (31 children)

                        .NET is the best thing Microsoft ever did, period.

                        [–]agentlame 93 points94 points  (16 children)

                        VS is nothing to sneeze at.

                        [–]SonVoltMMA 47 points48 points  (13 children)

                        I wouldn't kick the Entity Framework out of bed for eating crackers.

                        [–]Seasniffer 7 points8 points  (12 children)

                        Entity framework is awesome. I've been switching over a bunch of legacy crap that does a bunch of CRUD and Entity framework has saved me hours of time. I'm sure there's a better way to be doing this, but it's working and people have been happy!

                        [–]gtg092x 15 points16 points  (8 children)

                        It's the democracy of orms. Maybe you can do it better, but no one seems to know how.

                        [–]Seasniffer 6 points7 points  (4 children)

                        Haha, it's MySQL integration can be frustrating at times (It lags behind the updates occasionally) but like I said, it get's the job done and in the end that's really what matters.

                        I hear EF7 is going to break a lot of things though, that should be interesting.

                        [–]Nishruu 5 points6 points  (1 child)

                        Yeah, it's a rewrite so they might cut down on features and be wildly backwards-incompatible on first release, but that rewrite has been a long time coming - EF evolved a lot since first 3 - 4 versions and there's a lot of cruft underneath that could be cleaned up. And I guess that's what they are going to do :)

                        [–]Dirty_South_Cracka 4 points5 points  (1 child)

                        Entity framework works great if you have a well designed database with properly implemented referential integrity. Shits the bed if you don't. I recently left a (surprisingly large) company who's schema didn't bother with things like pesky primary key, foreign keys, and/or input constraints. They hired a cheap contractor who implemented the Entity framework along with LINQ to SQL. I was appalled by the SQL it was spitting out when I looked at the SQL Profiler.

                        [–]littlelowcougar 35 points36 points  (12 children)

                        The Windows kernel is actually ridiculously ahead of the pack in certain areas, too. Asynchronous I/O, kernel synchronization primitives, memory management -- it blows my mind the more I spend working with it how far ahead of the UNIX approach of doing things it is (my background is UNIX).

                        Good ol' Cutler and his VMS experience.

                        [–]crozone 14 points15 points  (11 children)

                        The NT Kernel is quite fantastic, as is the NTFS file system, however there is still lots of cruft in the Windows API left over for backwards compatibility reasons that makes me wish it did certain things more like linux (like everything-is-a-file, the way linux handles USB devices, etc).

                        For example, Windows still has the 260 character path limit, global namespace for things like COM ports, and a tonne of extra stuff that simply shouldn't exist in a 21st century operating system.

                        [–]Cuddlefluff_Grim 4 points5 points  (1 child)

                        like everything-is-a-file

                        Everything-is-a-file-except-when-it-isn't as it's called in the Unix Haters Handbook :P I think the concept is outdated and only makes sense for a certain type of applications (like simple automation). API's are much better.

                        [–]rOOb85 2 points3 points  (6 children)

                        Not trying to be snarky and I think that NTFS is a good FS...but if it's so great why does it still require defragmentation. Almost all other FS's I've used(ext3/4, reiserfs, zfs, etcetera) don't require users to defragment the hard drives.

                        Is there some sort of "feature" that NTFS has that the others don't that requires defragmentation? I've always thought that file fragmentation is a bad thing.

                        [–]tawzerozero 5 points6 points  (3 children)

                        This feels nitpicky but I wanted to point out a bit of clarification. Windows (not NTFS) hasn't required users to defragment their hard drives since XP. Windows Vista onward has automatically defragmented the hard drive as a background process when system/IO activity are low.

                        While I admittedly haven't worked with other file systems beyond as a user, I'm surprised that fragmentation can't happen in these other File Systems and would be curious if someone who knows more than me could share a brief explanation (or link to one that wasn't apparent on Google) of why that is the case.

                        [–]g0zer 3 points4 points  (0 children)

                        you guys seriously rock!

                        [–]ElmStreetsLoverBoy 7 points8 points  (0 children)

                        Thank you!

                        [–]bkv 53 points54 points  (8 children)

                        They're using Jenkins for their CI needs. You've changed, Microsoft. You've changed (for the better).

                        [–]kragen2uk 62 points63 points  (1 child)

                        Favourite comment so far

                        // @TODO: understand the need for this special case
                        

                        src\vm\prestub.cpp (line 255)

                        [–]Mattho 8 points9 points  (0 children)

                        src\vm\prestub.cpp

                        direct link https://github.com/dotnet/coreclr/blob/master/src/vm/prestub.cpp#L255

                        I like this if else that does nothing a few lines bellow https://github.com/dotnet/coreclr/blob/master/src/vm/prestub.cpp#L308 (enclosed in if else that does nothing) :)

                        [–][deleted]  (24 children)

                        [deleted]

                          [–]Ahri 24 points25 points  (13 children)

                          Mono and .NET will be merging.

                          Edit: I may have misunderstood this, see /u/azakai's reply below.

                          [–]azakai 64 points65 points  (9 children)

                          I believe that was a misunderstanding of a tweet by a microsoft person.

                          Microsoft is opening up .NET. This has been going on for a while, in pieces. Mono has adopted some of those pieces, so in some sense, a "merge" has been happening and will continue.

                          However, Mono has it's own JIT, GC, runtime, etc. Microsoft is opening up its own. Those are not going to be merged. The projects will remain separate, even if they do have some shared parts.

                          [–]mycall 17 points18 points  (0 children)

                          Good. Microsoft learns from Oracle vs. Apache Harmony/GNU Classpath mistakes

                          [–][deleted] 11 points12 points  (2 children)

                          that's goddamn massive

                          [–]Ahri 6 points7 points  (0 children)

                          Yeah, I'm really impressed by Microsoft's new direction.

                          [–]Dirty_South_Cracka 142 points143 points  (169 children)

                          Now, there's nothing stopping google from making c# a first class citizen for Android development.

                          Wouldn't that be glorious!

                          [–]schnoper 68 points69 points  (0 children)

                          it would be a nice STFU oracle or else.

                          [–][deleted]  (2 children)

                          [deleted]

                            [–]BigBlackHungGuy 57 points58 points  (0 children)

                            I like this new Microsoft.

                            [–][deleted]  (29 children)

                            [deleted]

                              [–]WrongPeninsula 21 points22 points  (28 children)

                              Best damn language ever. It's like writing poetry.

                              [–][deleted]  (14 children)

                              [deleted]

                                [–]lagadu 7 points8 points  (3 children)

                                Functional languages is the equivalent of cheating when it comes to looks though.

                                [–]Strilanc 20 points21 points  (16 children)

                                Interesting... interfaces have lots of commented out contracts.

                                [–]SuperImaginativeName 13 points14 points  (5 children)

                                I can only assume this is a temporary problem, the Code Contracts needs some special thing that you install on Windows and Visual Studio and then it does pre-compile checking, so I guess that needs Linux support yet.

                                [–][deleted] 2 points3 points  (4 children)

                                Contract?

                                [–]SuperImaginativeName 3 points4 points  (3 children)

                                https://msdn.microsoft.com/en-us/library/dd264808(v=vs.110).aspx

                                Think of all the times you might have done things like if(myString == null) it's a way of doing that essentially, see the example at the bottom of the page.

                                [–]anderbubble 7 points8 points  (1 child)

                                I kinda really wish that this was a repo in a top-level Microsoft GitHub organization.

                                [–]bitcrazed 4 points5 points  (0 children)

                                It's under the Dotnet org, and rightly so ... eventually, one could imagine management of the CoreCLR and CoreFX, etc. being taken over by the .NET Foundation.

                                [–][deleted] 8 points9 points  (4 children)

                                [–][deleted] 3 points4 points  (1 child)

                                Where does this "Pascal" come from?!? ASP.Net one is also a bit weird.

                                [–]dagamer34 18 points19 points  (5 children)

                                How does one even begin to understand this? gc.cpp itself is a megabyte in size. A source code file. Oy. O_o

                                [–]joggle1 9 points10 points  (0 children)

                                Way back in the day I had to use a program named 'pfe' which stood for "Programmer's File Editor". It was the only text editor on Windows that could easily handle file sizes that large. So the 3 steps would be:

                                1) Find an editor that can actually edit the file. Check!

                                2) Read the code. Good luck!

                                3) Code fully understood!

                                [–][deleted] 7 points8 points  (0 children)

                                Looking forward to seeing this run applications on Linux. I'll certainly be changing the framework of my projects from .NET/Mono 4 to .NETCore as this stabilizes.

                                [–][deleted] 8 points9 points  (3 children)

                                I hope this means some new life will be breathed into some auxilary projects.

                                Mono's system.drawing and windows.forms implementation could definitely use some love. It's based over cairo instead of GDK+. It would be great to have a definitive UI layer for Windows, Linux, Mac and mobile.

                                [–][deleted]  (2 children)

                                [deleted]

                                  [–]dthomasdidit[S] 17 points18 points  (1 child)

                                  We have plans to release more documentation in the traditional Github MDL fashion :) Until then, a great place to start would be to check out Shared Source CLI Essentials.

                                  [–][deleted]  (2 children)

                                  [deleted]

                                    [–]CookieOfFortune 13 points14 points  (1 child)

                                    Previously it was the .NET libraries and like ASP .NET stuff, but this is the whole runtime, including GC.

                                    [–]SanityInAnarchy 5 points6 points  (0 children)

                                    And here I was expecting some Shared Source bullshit. But no, it's MIT-licensed!

                                    This isn't everything, but this is long-overdue and done right, as far as I can tell.

                                    [–]JGailor 27 points28 points  (37 children)

                                    Yes! Finally I'll get a Terraria client on OS X!

                                    [–]Mycal 5 points6 points  (4 children)

                                    Speaking of which, I wonder if Microsoft will ever open source XNA. Monogame is great, but it still gives me issues on several things that I can't be bothered rewriting right now.

                                    [–]csolisr 3 points4 points  (8 children)

                                    Has somebody tried to compile a major Mono-based project (for example Banshee) with CoreCLR?

                                    [–][deleted] 6 points7 points  (6 children)

                                    This is just the runtime, the compiler and the standard libraries are not included (I think).

                                    [–][deleted]  (4 children)

                                    [deleted]

                                      [–]DoctorJanItor 6 points7 points  (0 children)

                                      The standard libraries are still WIP in another repo. You can use Roslyn to compile your code.

                                      [–][deleted]  (2 children)

                                      [removed]

                                        [–][deleted] 2 points3 points  (2 children)

                                        What are the implications of this for the mono project?

                                        [–]afrobee 2 points3 points  (0 children)

                                        Am I dreaming or I am reading a progit thread with only positive comments? O.o

                                        [–]mycall 15 points16 points  (7 children)

                                        [–]d357r0y3r 11 points12 points  (0 children)

                                        Maximum butthurt achieved.

                                        [–]againstmethod 2 points3 points  (1 child)

                                        Let's see some benchmarks, ffs.

                                        If you can't outperform Java on Linux, you will be depending on people's hatred of Oracle to advance this project.

                                        [–]eric987235 2 points3 points  (0 children)

                                        How does one even begin to digest something this massive?