Slashdot Mirror


Microsoft Previews Compiler-as-a-Service Software

angry tapir writes "Microsoft will release a Community Technology Preview of a new type of compiler its researchers have been building — code-named Project Roslyn — a company executive announced Thursday. Roslyn is a compiler for C# and Visual Basic with a set of APIs that developers can use to fine-tune their code. It resembles a model developed by the Mono Project, in which the information the compiler generates about a program can be reused as a library."

131 of 171 comments (clear)

  1. I thought VisualBASIC was dead... by Compaqt · · Score: 1

    Didn't NetCraft confirm it?

    --
    I'm not a lawyer, but I play one on the Internet. Blog
    1. Re:I thought VisualBASIC was dead... by dririan · · Score: 1

      No no, you're thinking C#. Which is not in any way to be confused with C3. Which is not at all a typo that completely slipped through... Nothing to see here. Move along. /s VB6 is dead, but VB.NET is still alive and kicking (sadly) both as a transitional language from VB6 and as a language for new projects, but IIRC Microsoft suggested C# and avoiding VB.NET where possible.

    2. Re:I thought VisualBASIC was dead... by Pino+Grigio · · Score: 1

      Why "sadly" with visual basic .NET? I haven't used it for a good few years, but it's only superficially different from C#.

    3. Re:I thought VisualBASIC was dead... by cbhacking · · Score: 1

      There are some who claim that its somewhat verbose syntax ('dim varname as vartype' instead of 'vartype varname;' for example) and Basic-like loop and code structure make it an inherently worse language. It looks kind of ugly to an experienced developer in C-style languages, but I honestly don't see much basis for disliking it beyond a degree of elitism that drives one to scorn a highly readable "easy to learn" language.

      Under the covers, aside from a few assemblies specificlaly to aid compatibility with legacy VB code, VB.NET is just another .NET language. It's a little less powerful than C# in some ways - for example, I don't think it allows unsafe code bloacks (direct pointer access) - but it's not any slower, or less efficient, or less compatible (it works in Mono, incidentally), or anything of that nature.

      --
      There's no place I could be, since I've found Serenity...
    4. Re:I thought VisualBASIC was dead... by Anonymous Coward · · Score: 1

      ...I honestly don't see much basis for disliking it beyond a degree of elitism that drives one to scorn a highly readable "easy to learn" language.

      I know someone, a Perl programmer who thinks Python is too "childish" - IIRC is how he put it.

      I think it's a bit ironic that many programmers and other CS types have this elitism towards easy to learn language when the whole point of computer languages was to make it easier for the programmer. No one seems to remember their CS history and how human readable languages were developed because assembly and machine code was just too cumbersome.

    5. Re:I thought VisualBASIC was dead... by julesh · · Score: 1

      The problem is that producing a programming language with verbose keywords and so on doesn't actually make it any easier to work with, at least once you get beyond trivial levels. The easiness is superficial. Once you get beyond the surface level (which most people can do in a matter of just a few weeks working with a language) the verbosity just gets in the way of seeing the truly important things. And the consistency of c-like syntax means there's actually less stuff to remember. How do you end the block of instructions for a while loop? Oh, yes, '}'. The same as every other block. In BASIC, however, I have to stop and think, is it 'END WHILE'? 'NEXT'? Ah, no, it's 'WEND'. 'NEXT' is for 'FOR' loops, and 'END (keyword)' is for 'IF'.

      If verbosity were the key to making programming languages understandable, COBOL would have been the last language we ever needed.

    6. Re:I thought VisualBASIC was dead... by ashkante · · Score: 1

      Those wimps don't know the meaning of the world "elitism"! Real programmers use butterflies!

    7. Re:I thought VisualBASIC was dead... by Dr_Barnowl · · Score: 2

      My main reason for disliking VB.NET is I don't want to wreck my VB6 skills.

      While I wouldn't voluntarily want to go back to VB6 development ... well, it's something to fall back on. There's so much VB6 software out there, that it's the COBOL of the future - people are likely to be wanting skilled VB6 developers and they are probably going to have to pay through the nose for them. A nice little pension plan.

      VB.NET is close enough to VB6 in syntax, but different enough to ruin my memory of VB6. So I have avoided it as much as possible. As another poster points out, it's essentially C# with some different syntax sugar.

    8. Re:I thought VisualBASIC was dead... by mangu · · Score: 2

      the whole point of computer languages was to make it easier for the programmer

      That's very true and that's why I use Python a lot, despite having learned to write software in the 1970s, in FORTRAN in an IBM/370.

      However, there's a moment when ease of use limits the programmer if he needs to go to the limits of performance. We are used to think that we have CPU enough, so it's not necessary to optimize for performance anymore.

      That might be true for business software, under some circumstances. Scientific and engineering software, OTOH, could still use a lot more CPU than what we have right now. This means you may need to reorganize your data structures in some non-obvious way.

      When you need to invert a matrix, for instance, which is one of the most common operations you do in number crunching, you have to keep your data carefully aligned, you need to take advantage of what vector operations your hardware does and consider how the cache is handled. You cannot do this with object oriented programming, you need to define memory allocation and use pointers to manipulate data. Object oriented programming will not work in this case.

      I may use Python to develop algorithms, but for doing real jobs only C or Fortran will do.

    9. Re:I thought VisualBASIC was dead... by WrongSizeGlass · · Score: 1

      While I wouldn't voluntarily want to go back to VB6 development ... well, it's something to fall back on. There's so much VB6 software out there, that it's the COBOL of the future - people are likely to be wanting skilled VB6 developers and they are probably going to have to pay through the nose for them. A nice little pension plan.

      There will be a market for VB6 programmers for a while. I'd be willing to bet there will be a nice market niche for individuals or small firms that do nothing but VB6 to <insert new language> conversions for years to come.

      I've finally convinced one of my clients to port their code over from VB6 to *something else* (I've been trying to get them to switch since 2006). Their VB6 programmer/Access person is retiring next July and they've finally seen the light that their VB6/Access solution needs to be upgraded (their DB is 1.6GB, which is large for an Access DB). We still need to have several meetings to discuss what direction they're going to go (what language, what DB platform, if they're going to simply recreate their existing app or add long overdue features, etc), but they have no sense of urgency (our next meeting is tentatively scheduled for Nov but may be moved to Dec or Jan).

      All their computers are running XP & Office 2003 (lots of VBA macros). Their server is SBS 2003. Their code isn't documented and there is no DB map (or data normalization). I bought them VS 2005, an assortment of .NET & MS SQL books and a new development machine in 2006 but they didn't take advantage of it. I did the same thing with VS 2008 in 2009, but they still sat on their hands. Now they are curious about Win 8 but have "heard things" that development may be different for it and want to be sure they don't rush into anything.

      Based on my client's track record of taking years to make any kind of decision I'm betting they don't settle on a solution until well after their programmer retires. By then they'll have to contract a company to convert everything over for them and hire a new programmer that hopefully can function as a DB admin. This whole mess may be over in 2 - 3 years (if they make a decision soon).

    10. Re:I thought VisualBASIC was dead... by aix+tom · · Score: 1

      C3 is a typo? Aww, man, I though it might be the next thing, the thing between C# and the beautiful new C4 which completely blows up your computer.

    11. Re:I thought VisualBASIC was dead... by larry+bagina · · Score: 1
      VB6 (and Pascal) are like an overbearing mom that make you eat your vegetables, doesn't let you drink caffeine, and makes you go to bed by 9'o-clock. Also, you're locked in a padded room so you don't hurt yourself. C is like the cool dad. He gives you money and lets you decide how to spend it. If you want to spend it on peas and carrots, fine. If you want to spend it on coke and whores, even better.

      Some people are incapable of making choices for themselves.

      --
      Do you even lift?

      These aren't the 'roids you're looking for.

    12. Re:I thought VisualBASIC was dead... by Fnord666 · · Score: 1

      No no, you're thinking C#. Which is not in any way to be confused with C3. Which is not at all a typo that completely slipped through... Nothing to see here.

      That's a bit harsh, don't you think? I mean I could see the criticism if this were a professional news outlet rather than someone's personal blog...

      --
      'The tyrant will always find pretext for his tyranny.' - Aesop's Fables
    13. Re:I thought VisualBASIC was dead... by LateArthurDent · · Score: 1

      There's so much VB6 software out there, that it's the COBOL of the future

      Most COBOL software is extremely complex stuff running on mainframes of banks and insurance companies.

      Most VB6 software is something that was coded in 15 minutes to fill a need in a lab computer, or a frontend to some command-line program that isn't written in VB. This is not me looking down upon VB6, that's just what VB6 was designed to do: it's easy to learn and you could get something running on it fast, so that's what people did when they just needed something quick. The result of it is that if somebody needs to fix a VB6 app, it's going to be cheaper to hire a common C# developer to recreate it than to pay COBOL money to VB6 developers. They're not complex beasts that need to be extremely well-understood, zero errors, on a machine that can't afford downtime.

    14. Re:I thought VisualBASIC was dead... by dririan · · Score: 1

      That's like saying that Python and Perl are only superficially different. (Both can run on the Parrot VM, too.) They have wildly different syntaxes. The only thing they really have in common is the .NET stuff, which only means they interoperate easily and share the same pros/cons that are inherited from .NET. C# looks nothing like VB6, VB.NET (quite intentionally) looks damn near identical to VB6.

    15. Re:I thought VisualBASIC was dead... by WorBlux · · Score: 1

      (does? (lisp (take it)) too-far)

    16. Re:I thought VisualBASIC was dead... by StormReaver · · Score: 1

      You cannot do this with object oriented programming

      This is done all the time with object oriented programming. Perhaps what you meant to say is that you can't do this with object oriented languages that hide pointer arithmetic. That would be true. It would also be true that you can't do it with procedural languages that hide pointer arithmetic.

    17. Re:I thought VisualBASIC was dead... by mangu · · Score: 1

      Perhaps what you meant to say is that you can't do this with object oriented languages that hide pointer arithmetic

      Yes, that was what I meant. You could do it with objects in C++.

      Problem is C++ has so many quirks that what I often do is to think in objects but implement in plain C. Object orientation is a principle that you can apply even if your programming language doesn't support objects.

    18. Re:I thought VisualBASIC was dead... by rev0lt · · Score: 1

      You know, COBOL still is the COBOL of the future... There is a ton of COBOL code being run as middleware for Java servlets. The COBOL OOP revamps are a niche (and thank god, because object oriented COBOL is like watching a terror movie), but there is a lot of investment on legacy conversion to Linux and .NET, and middleware interfacing and/or graphical revamps. You'll still have plenty of COBOL when the last VB6 application exits.

    19. Re:I thought VisualBASIC was dead... by Pino+Grigio · · Score: 1

      The most important aspect of .NET is the libraries, and they're the same across both languages. I mean literally the same. The syntax is a bit different, but that's all. A C# to VB.NET source code converter is pretty trivial to construct. I don't think you could say the same for Python and Perl. And VB6 and VB.NET are totally different animals. VB.NET is much closer to C# than it is to VB6.

    20. Re:I thought VisualBASIC was dead... by Pino+Grigio · · Score: 1

      Intellisense usually takes care of that for you.

    21. Re:I thought VisualBASIC was dead... by dririan · · Score: 1

      That's true, but sharing the same libraries doesn't mean too much. You could make the argument that Python and Perl can share libraries (so long as they're written in C, they could be exactly the same for both as well; interfaces could be written the same for both easily so that utilizing the library would be the same for both, although that's not always the case for C# and VB.NET). My point was more towards the syntax differences, not the libraries. Also, VB.NET has its own runtime library that runs on .NET as well (see http://msdn.microsoft.com/en-us/library/microsoft.visualbasic.aspx), which is certainly not shared with C#.

      Also, there's no way that VB.NET is closer to C# than VB6, except for automagically working with everything .NET. And even then, the syntax differences are too big to ignore. Look at all the code snippets on MSDN; they're wildly different between VB.NET and C# quite a few times. Look at the VB6 to VB.NET migrator, it's extremely trivial (only really converting everything to use .NET).

    22. Re:I thought VisualBASIC was dead... by dririan · · Score: 1

      Ah, yes, I must not know what I'm talking about. Except that's not the case here. I've directly migrated quite a few moderate sized projects from VB6 to VB.NET. Bullshit on no tool converting properly. Granted, the code needs a decent amount of touch up after the fact, but it could be much worse. Moreover, just because you can convert X to Y doesn't make X the same as Y. I've worked with C# 1.2, 2.0, and 3.0. (Alright, you caught me. I've never worked with LINQ. My bad...) I've only slightly worked with VB.NET past aforementioned conversions. I sure as hell don't know everything about them, but I sure as hell know enough to know that C# and VB.NET are not more similar than VB6 and VB.NET. Just because something's running on the same underlying framework doesn't make them the same. I don't hear you arguing that C and C++ are the same, because they both (can) run on the same systems (pick your favorite).

      So please, don't make straw man arguments and make a real argument besides "YOU HAVE NO EXPERIENCE LOL", and certainly not if you really have no idea how much experience someone has.

    23. Re:I thought VisualBASIC was dead... by liquidweaver · · Score: 1

      I've been following your threads on this topic - an I felt I have to chime in, because I think you have an honest misunderstanding of the technology. I have written rather large projects in both VB .NET and C#. I currently work on a MSIL decompiler. The language syntax is very different, and VB. NET is similiar to vb6 in syntax. I believe your misunderstanding comes from the behavior of the languages, which the people arguing with you are pointing out. You can take _any_ program written in C# or VB .NET, and _directly_ convert them to the other language. The only difference will be syntax. That's it. There are a few corner cases currently where C# makes some pretty squirrely VB code, yes - but they make equivalent programs. You can profile them the same way, they have the same API available to them, etc.

      --
      mov ah, 4ch
      int 21h
    24. Re:I thought VisualBASIC was dead... by badkarmadayaccount · · Score: 1

      With color coded syntax highlighting - no.

      --
      I know tobacco is bad for you, so I smoke weed with crack.
    25. Re:I thought VisualBASIC was dead... by badkarmadayaccount · · Score: 1

      Matrix operations aren't uncommon - if the compiler can't optimize all that - well, get a better one.

      --
      I know tobacco is bad for you, so I smoke weed with crack.
  2. Re:So, why not use Mono? by eexaa · · Score: 1

    I would actually bet they just took mono and dotNETized it a little.

  3. Re:Threat to Computing by dririan · · Score: 1

    I agree 100%. I'm a huge distcc fanboi, but outsourcing compiling of code scares the shit out of me. I'd expect to see a security vulnerability where faulty code was somehow delivered to you. It's a backdoor that you run yourself, as you expect the compiler to return, you know, a compiled version of what you gave it. Nasty things in 3... 2... 1...

  4. Re:Threat to Computing by aztracker1 · · Score: 3, Insightful

    I don't think you even really read the summary... it essentially comes down to offering more compile abilities into an application. This can work for extensible plugins, and scripting. It is not the compiler offered via a SaaS (Software as a Service) model.

    --
    Michael J. Ryan - tracker1.info
  5. I'll just leave this here by reashlin · · Score: 2

    http://cm.bell-labs.com/who/ken/trust.html

    It is left as a exercise to the reader to see the point I'm trying to make.

    1. Re:I'll just leave this here by scribblej · · Score: 1

      That's a brilliant article and should be required reading. It's good enough reason to not use Microsoft's present compilers.

      Just for the record, though, the article doesn't seem to suggest anything about actual compilers as a service; it still seems to discuss a normal compiler that runs on your local machine. Very confusingly titled.

    2. Re:I'll just leave this here by Jonner · · Score: 1

      http://cm.bell-labs.com/who/ken/trust.html

      It is left as a exercise to the reader to see the point I'm trying to make.

      I don't think that's any more relevant now than it has been for decades when using proprietary, binary-only development tools from MS and others. Thompson's point was that even having source, which was always assumed on Unix systems, is not sufficient to prevent trojans for being inserted into code.

      The description "Compiler-as-a-Service" is misleading. It doesn't mean that people will ship their source to MS and get back object code. It simply means that the compiler exposes an API for introspecting code. Though it may be interesting, it's not a new idea by any stretch of the imagination. I think a far more relevant reference is to Greenspun's tenth rule.

  6. Re:Threat to Computing by erik+umenhofer · · Score: 1

    It will play into the Azure platform if it's a pure service. You can run an application on Azure with a SQL backend, and have this new compiler service build it for you.

    Although from the article, I didn't even get a sense of that being the purpose. From what i was seeing, it's just a service you can run while developing that will give you more insight into the compiler's workings. You access it via VS2010 like you normally do.

    I'm curious how this would play into TFS as well, if you could get more information to be pumped out from MSBuild to some sort of report.

  7. Re:So it's like LLVM? by underqualified · · Score: 1

    It's going to have a GUI?

  8. Re:Threat to Computing by davepermen · · Score: 1

    it means nothing like this (and i hate the name of it because of it). it means you have much more ways to use the compiler. it still is on your desktop, still 100% in your control. but it's not a blackbox anymore, it's now something you can plug in own stuff, extend, reuse, etc.

  9. Re:Threat to Computing by c0lo · · Score: 1

    I don't think you even really read the summary...

    I don't think you read the (already classic?) Ken Thompson's Reflections on Trusting Trust
    "You can't trust code that you did not totally create yourself." - if your binary compiler injects a backdoor in the object code, then even recompiling the compiler from source may not get you out of the woods.

    Otherwise, let point to you the (in my opinion) relevant phrases in TFA:

    Today's commercial compilers are black boxes, Hejlsberg said.

    While Hejlsberg is probably right, fortunately in this world there are such things as non-blackbox-compilers.

    --
    Questions raise, answers kill. Raise questions to stay alive.
  10. Re:Threat to Computing by johanatan · · Score: 1

    It's actually more about exposing the internal compiler metadata to the outside world. MS' very own LLVM essentially.

  11. Try reading the article by msobkow · · Score: 2

    It's not about software-as-a-service compilers, it's about exposing the internal data structures and information a compiler produces to the programmer. This lets you go a level beyond introspection and into some interesting possibilities.

    --
    I do not fail; I succeed at finding out what does not work.
    1. Re:Try reading the article by klingens · · Score: 2

      Of course it's about software-as-a-service compilers. The only way MSFT can give you this ability to look what the compiler does is by keeping the compiler binary from you (compiling as a service by MSFT) or giving you much more insight on how the compiler works, basically open sourcing it. The latter is obviously anathema, so they provide it as a service. And if it catches on, it's another awesome lock-in capability by MSFT. Awesome!

    2. Re:Try reading the article by msobkow · · Score: 1

      What? Did computers mysteriously lose the ability to save information to the hard drive?

      --
      I do not fail; I succeed at finding out what does not work.
    3. Re:Try reading the article by dkleinsc · · Score: 1

      Oh, you mean like gcc has been doing since basically forever?

      I'm not saying this isn't good, it clearly is, but it highlights a difference between open source tooling and closed tooling: Both gcc and Microsoft's compilers need to be able to show their own developers the internals in order for them to write good compilers. Because gcc was open source, though, they could build this in a way that made it available to their user base, whereas Microsoft had to hide or remove theirs before shipping.

      --
      I am officially gone from /. Long live http://www.soylentnews.com/
  12. Re:Threat to Computing by bennett000 · · Score: 1

    There is something about this concept that I find very threatening. Service Orientated Architecture is no doubt a good thing and Software as a Service can save costs. However with something as simple as a compiler being outsourced to the platform vendor, this returns control over software creation that can be produced squarely with the vendor.

    Imagine a vendor that could suppress the compilation of software that it deems unfavourable. A company would never refuse to provide a compiling contract to a business that makes products that compete with the vendor, would they? They would not create a terms of service that deems what software is appropriate to be compiled?

    Have you ever heard of Apple's App Store? It's this crazy store which is the only place you can get applications for your phone or tablet, and Apple controls every piece of software published on it. Apple also imposes arbitrary bans on applications whenever Apple sees fit. Apple is also trying to push this model to their laptops and personal computers. Furthermore if you want to make your own applications run on your iDevice you have to pay apple $100, or violate the TOS to unlock your phone. That's right, imagine that, you outright own a device, but you don't have the right to administer it.

  13. Re:After your personal info... by gutnor · · Score: 1

    Thanks but no thanks, I think I'll be sticking with offline compilers

    Will nobody ever think of the NSA ? You must be a terrorist.

  14. Re:After your personal info... by pyrbrand · · Score: 5, Informative

    No, you're not getting it right, this is a service as in a process always running on your computer, not as in a cloud based compiler. The point is your program can dynamically call the compiler with additional source code to be compiled so your program can modify itself even though it's in a relatively static language like C#.

  15. Re:Threat to Computing by Superken7 · · Score: 1

    What is preventing anyone from doing just that with local compilers? I mean, its not like you can't switch from one compiler to another if one provider decides to be a douchebag and ban specific use. That will be their problem, and that's what competition is for. But I don't really see why that should be worse for 'services', at least in practice.

  16. Re:After your personal info... by c0lo · · Score: 1

    No, you're not getting it right, this is a service as in a process always running on your computer, not as in a cloud based compiler. The point is your program can dynamically call the compiler with additional source code to be compiled so your program can modify itself even though it's in a relatively static language like C#.

    I'd mod your post +(Insightful/Informative)... my fault, thanks for pointing it out.

    --
    Questions raise, answers kill. Raise questions to stay alive.
  17. Re:Threat to Computing by Imbrondir · · Score: 1

    Cross compiling is currently a bit of a bitch though. I would like a cloud compiler helping with building for different platforms at once. Provided you could freely download the compilers yourself of course.

  18. Bad Title by improfane · · Score: 1, Insightful

    I'm sorry. The title of this article is bad. SaaS has an established meaning and it does not necessary mean the services running in the background (as a service) on your PC, it means using remote services.

    The article makes no mention where the actual compiler runs. If it runs remotely, are our fears are not unqualified.

    --
    Slashdot needs Geekcode | Can anyone recommend any good SCIFI? My tastes: Foundation, Startide Rising, CITY, Ringworld,
    1. Re:Bad Title by Tacvek · · Score: 1

      The compilers do not run remotely. They will continue to be local applications installed with every copy of the .NET framework.

      The Compiler as a Service concept mostly just exposing the the compiler's AST to the calling program. It has no relation to SaaS.

      This is of great benefit to authors of tools that read and manipulate source code, since they no longer need to implement their own AST and parser, and can instead use the one of the compiler, which ensures that they never reject code that the compiler will accept.

      This also opens up new possibilities for extending the languages. For example, one could write a wrapper that compiles code to AST, locates all instances of some new attribute, and modifies the AST in some way, before letting the compiler convert the AST to an assembly. There are tools for Aspect Oriented Programing that utilize attributes, but they currently need to rewrite the IL after the code is compiled, which is suboptimal compared to doing that as part of the compilation process itself.

      What exactly will become possible depends on just what parts of the compiler get exposed, but at least until now that has not been revealed.

      --
      Stylish sheet to fix many problems in Slashdot's D3: https://gist.github.com/801524
    2. Re:Bad Title by St.Creed · · Score: 1

      I think you hit the nail on the head. It's about time Aspect Oriented Computing was integrated into the compilers. If this works as advertised (*) I'm all for it.

      (*) no need for cynical remarks here, I can think of them well enough myself, thanks :)

      --
      Therefore, by the (faulty) logic you're using, you're just a cow with a keyboard - osu-neko (2604)
  19. Re:After your personal info... by c0lo · · Score: 1

    Are you a troll, or just dim? If you don't understand anything the article speaks about, it might be a good idea to just not comment.

    If I'd follow your advice:
    1. I'd lose the chance to stand corrected - I'm not afraid to be in such a position, I'd suggest you to try sometime.
    2. life may become a bit boring for you. I mean, you wouldn't have too many occasions to call someone a "troll or dim-witted". How would you like "good manner and menuet dancing" all the day everyday?

    --
    Questions raise, answers kill. Raise questions to stay alive.
  20. Have they not heard of System.CodeDom.* ? by oPless · · Score: 1

    Wait what?

    I thought I was already using System.CodeDom.Compiler to dynamically create assemblies?

    Also, converting code from one language to another isn't new in the slightest. Redgate's Reflector has been disassembling IL and displaying it in C#, and VB for ages. I'm sure there are open source equivalents too.

    I fail to see what all the excitement is ... Unless they're able to give me an AST to mess with? Even then I might not be terribly interested.

    It's quite possibly a terrible article. I mean C3! WTH?!

    1. Re:Have they not heard of System.CodeDom.* ? by Tacvek · · Score: 1

      The Compiler as a Service system should give us some form of AST. This should be exactly the same AST as Microsoft uses for Intellisense, since one of the goals of this project internally was to allow Intelisense and the compiler share as much code as possible, since they previously had separate implementations of some analysis passes, and other complicated code, with the Intellisense version not full matching the version in the compiler.

      I suspect we may also have the capability of manipulating the AST, and then handing back the altered AST to the compiler to finish the work. In this way we could potentially extend the compiler.

      This should also be interesting to creators of tools like ReSharper, which currently write their own lexer, parser, and AST, and analysis passes. It would be nice for them to have the option of using the compiler's as well.

      Until the CTP is released, the exact extent of what can be done will not be certain.

      --
      Stylish sheet to fix many problems in Slashdot's D3: https://gist.github.com/801524
  21. 'Service' as in 'daemon' by 2phar · · Score: 2

    not 'service' as in 'zuckerberg/NSA world domination'

    1. Re:'Service' as in 'daemon' by Marc+Madness · · Score: 1

      Thanks, I feel better now: +1. I was getting a bit confused with all this talk about privacy and what not when I could find no indication in TFA that this was meant to be a service available on the internet (or in modern buzz-speak: the cloud), and I thought I was the only person not getting it. When I read the headline, I thought we were going back to the days of time-share computing. It seemed like a giant leap backward to me and it made me think that Microsoft Research must have either taken leave of their senses or found some other way to exploit developers or both. This is a much more interesting idea. However, the expression "give 'em enough rope..." comes to mind.

  22. Re:After your personal info... by Asic+Eng · · Score: 1

    I don't think that's your fault, the summary is bad. Also I don't think it should be "C3", they are referring to C#. That mistake is in the article though, the summary just repeats it.

  23. Re:Threat to Computing by Noughmad · · Score: 1

    I would like a cloud compiler helping with building for different platforms at once. Provided you could freely download the compilers yourself of course.

    Something like the OpenSuse build service?

    --
    PlusFive Slashdot reader for Android. Can post comments.
  24. Schmit's "Optimizing Assembler" by MichaelCrawford · · Score: 1

    Pentium Processor Optimization Tools by Michael L. Schmit comes with a floppy that contains an "Optimizing Assembler". It doesn't actually optimize your code, but produces a formatted listing that gives the timing of each instruction, as well as pipeline stalls and the like. One can then use the listing to refactor the assembly source to be more efficient.

    The book is long out of print but can easily be had used. It's also a good book for learning x86 assembly in general.

    --
    Request your free CD of my piano music.
  25. C3 is not a new language by fynfuqbg · · Score: 1

    If you Read The Fine Article (I know,.. you are not supposed to do this on Slashdot) you will see that it mentions C#. This is just the author who didn't push hard enough on the Shift-key and the submitter and the poster who didn't care to correct this error.

  26. Re:Imagine a world where... by Tomato42 · · Score: 1

    Doesn't change the fact, that a). you have the compiler "in your hands" for all of those platforms, and b). those were closed platforms since their beginning.

  27. Re:Threat to Computing by maxwell+demon · · Score: 2

    However, even if you get a free compiler like gcc, you either get the source (which you then have to compile yourself, shifting the problem to the compiler you use to compile it) or you get a precompiled version where you have to trust that whoever compiled it did not insert a backdoor.

    Actually the only way to be completely sure without trusting anyone is to actually study the generated machine code (that's assuming you can trust your computer to faithfully execute that, of course). Of course in practice nobody would go that far (and few would even have the resources to do so), but instead there's one point where you put trust in (possibly the compiler+linker), and from there on you just go on.

    Of course, another way would be to bootstrap by writing yourself an assembler in machine code, then a compiler for the source language of that compiler in assembly (using your self-written assembler), and then use that to compile the compiler you got in source (and to get an optimized compiler, compile the compiler with that compiler again). But again, few people have the resources to do so.

    Well, one way to increase trust would be to build the source-provided compiler with two different compilers, then use both of these generated compilers to re-compile the compiler, and then compare the generated executables. If only one starting compiler has been compromised, or if both have been compromised independently, then the compiler executables thus generated will differ. Thus if the compiler executables generated that way are the same, they are very likely not compromised, or else there's a conspiracy and both original compilers contain the same malicious modification. The more separate compilers you add to the mix, the less likely a conspiracy becomes (and moreover if some compiler is really compromised, you'll also learn which one -- although you cannot exclude the possibility that the difference is just due to a "self-propagating bug" instead of due to malicious code, but then, neither is desired).

    --
    The Tao of math: The numbers you can count are not the real numbers.
  28. Sorry, we didn't make our release deadline... by ysth · · Score: 1

    The cloud compiler had yet another outage.

  29. Re:After your personal info... by monopolarbear · · Score: 1

    C3 might be a typo using a non US keyboard. For example, in order to type # in my keyboard layout ( http://img853.imageshack.us/img853/6585/kbdb.png ) , you should press AltGr + 3. If you miss AltGr you would type C3 instead of C#..

  30. Re:So, why not use Mono? by Robert+Zenz · · Score: 1

    I wonder where all the trolls are which are always shouting "Mono is a cheap clone of .NET"...

  31. Re:After your personal info... by pixy11 · · Score: 1
    You're not getting it right either though that's most likely the summary's fault. Unless to read the entire article I don't think one would get what this is about.

    Today's commercial compilers are black boxes, Hejlsberg said. A compiler is a program that converts source code into binary executable program. Internally, a compiler generates a lot of information about the program it is building, he explained, although typically the developer doesn't have access to that data. Roslyn can offer access to this data, Hejlsberg said. The data can then be used by Visual Studio to generate more options for programmers.

    It is a service to you, the developper, by providing you with information that normally only lives in the compiler. You can then you this data to have a better understanding of your code, how it is going to compile and various other operations.

    Developers could also use the output of such software to do tasks like refactor, or reorganize, their code more easily, to add C# and Visual Basic functionality to programs written in other languages. It also adds dynamic typing to the statically typed C# and Visual Basic, allowing developers to add objects and new variables to a program on the fly. [...] He also demonstrated how Roslyn could convert Visual Basic code to C# code, and vice versa, much to the delight of the audience.

  32. My dislike for VB.Net can be summarised with this: by Toreo+asesino · · Score: 1

    "option strict on" ...

    *facepalm*

    --
    throw new NoSignatureException();
  33. There's prior art by mangu · · Score: 1

    you have much more ways to use the compiler. it still is on your desktop, still 100% in your control. but it's not a blackbox anymore, it's now something you can plug in own stuff, extend, reuse, etc.

    Hmmm, I wonder where have I seen this before?

    1. Re:There's prior art by spongman · · Score: 1

      wait, GCC has a library that allows you to compile code on the fly, inspect the syntax and symbols of the results, load it into the calling process and execute it?

      Here's the code from the video (42:00):

      static void Main (string [] args) {
              ScriptEngine engine = new ScriptEngine ();
              Session session = Session.Create ();
              engine.Execute ("using System;", session);
              engine.Execute ("int Sqr(int x) { return x * x; }", session);

              var f = (Func<int, int>) engine.Execute ("new Func<int, int> (Sqr);", session);

              for (int i = 0; i < 10; i ++)
                      Console.WriteLine (f(i));
      }

      if GCC can do something like that, i'd love to see it.

  34. Re:Threat to Computing by mangu · · Score: 1

    If you took the care to let your mouse hover on the link you'd see that the article's title was "Microsoft previews Compiler-as-a-Service software". The article's author used a very bad analogy-of-an-analogy and that's what's causing this confusion.

  35. This article was written by an idiot by benjfowler · · Score: 1

    Given the dire state of technical and scientific journalism these days, nothing surprises me, although for technical journalism, this is hitting a new low.

    So basically, he's describing a compiler which generates an annotated AST of the program being compiled? Actually, I've got no idea, because of shoddy, slipshod, lazy journalism.

    Even for modern journalism, this is a piss poor effort. Whoever wrote this should be ashamed of themselves.

    1. Re:This article was written by an idiot by chriseyre2000 · · Score: 1

      So a reimplementation of Boo, at the framework level?

    2. Re:This article was written by an idiot by shutdown+-p+now · · Score: 1

      Now they have it as a general-purpose C# library, which can easily be used by any .NET program to dynamically generate CLR bytecode. Kinda like Java Compiler API did 5 years ago.

      But unlike the Java compiler API, this also exposes AST (it's part of the public API surface).

  36. Prime use case: better merge conflict resolution by DanyX23 · · Score: 1

    A great use case for something like this would be better merge conflict resolution. DVC Systems like git, hg etc work reasonably well for source code for simple changes, but concurrent refactorings in different branches are still a potential headache. If merge algorithms could get easy access to the semantics of the code they try to merge they could be a lot cleverer than just line based diffing. Does anyone know is something like this is already being worked on?

  37. Re:After your personal info... by wellwellwelloh · · Score: 1

    Jeez, these modern languages get more like xbase/Firefox every day.

  38. Re:After your personal info... by Rockoon · · Score: 1

    VC6 (and even VB6) spit out data consumed by Microsofts stage-2 compiler (C2.exe)

    Although I dont think such a thing exists yet, C3 could indicate another stage. Compiler research has been an ongoing thing at Microsoft, and the in-development Phoenix Framework continues to use a stage-2 compiler (still named c2.exe)

    I believe the stage-2 compiler directly consumes abstract syntax tree's, performs optimizations (constant folding, etc..), generates 3AC intermediate code and performs more optimizations (peephole) and then (of course) generates object code.

    --
    "His name was James Damore."
  39. Thus saith David A. Wheeler by tepples · · Score: 1

    Well, one way to increase trust would be to build the source-provided compiler with two different compilers

    I'm glad to see someone else remembers David A. Wheeler's diverse double-compiling dissertation.

    1. Re:Thus saith David A. Wheeler by maxwell+demon · · Score: 1

      Actually I didn't know that work. But then, thinking about it and formally proving it are two things, so it's nice that this idea has also been formally proven.

      --
      The Tao of math: The numbers you can count are not the real numbers.
  40. Use our compiler or your exe won't load by tepples · · Score: 1

    I mean, its not like you can't switch from one compiler to another if one provider decides to be a douchebag and ban specific use.

    If a device's manufacturer won't digitally sign for execution any binary that isn't compiled with the manufacturer's own toolchain, developers of applications for that device can't switch.

  41. I trust David A. Wheeler's trust by tepples · · Score: 1

    Please see replies to c0lo's post.

  42. Greenspun's Tenth Rule by tepples · · Score: 1

    Sounds like they kludged a re-invention of LISP onto an unsuitable language.

    Yeah, but what isn't a reinvention of half of Common Lisp?

  43. Re:Imagine a world where... by DrgnDancer · · Score: 1

    IIRC Apple's compiler is or was gcc, I seem to recall them moving to another (also open source?) compiler a while back. Regardless, Apple compilers are more or less standard C/C++/ObjC. The trick with iDevices is getting the compiled code onto the device. You can write, compile, and test IPhone apps all day with free tools on any Mac, or even a (questionably legal) Mac VM. Getting your code onto an iPhone requires either a license or cracking the device.

    (It's a fine point I'll agree, but somewhat important. If Apple disappeared tomorrow you could still write and compile software for iDevices, and after jailbreaking them, get it onto the devices.)

    --
    I don't need a million points of light, just two points of multi-mode fiber and a 10 Gig-E router.
  44. Re:So, why not use Mono? by ByOhTek · · Score: 4, Informative

    You "new" it was better? I believe the word you are looking for is "knew".

    Also, Mono is an implementation/compiler for .NET, not a replacement. So, if mono is better than (Visual Studios, and the MS .NET run time, I'm guessing you are referring to?) Then I'm guessing you don't want to kill .NET because that would also kill Mono, which is .NET.

    To emphasize this point, I compile programs on both Mono and Visual Studios 2010/MS Runtime. I then run programs compiled on either system to run on the other.

    Both are AMAZING pieces of work.

    --
    Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
  45. Re:Threat to Computing by DrgnDancer · · Score: 1

    You also can't trust food you didn't grow yourself. Doors and locks you didn't build yourself. People whom you haven't given birth to and watched from infancy. The level of paranoia represented by that quote is borderline hysteria. If you applied that mantra to any other area of your life you'd have to live in a sealed commune, by yourself or maybe with with a single (well vetted and not allowed to leave) life partner. Of course you can't trust any software you didn't create yourself... Like anything else in life you take some level of risk with nearly every decision you make. I'm not going to personally code review everything I put on my system on the off chance that Microsoft has inserted malware into it. Just like I'm not going to grow my own food on the off chance that Kraft suddenly decides to start poisoning every 20th bag of chips.

    Indeed, were I to decide to do either of those things, I probably wouldn't have time to do the other, or much of anything else.

    --
    I don't need a million points of light, just two points of multi-mode fiber and a 10 Gig-E router.
  46. Re:Threat to Computing by ByOhTek · · Score: 1

    I don't think you even really read the summary...

    I don't think you read the (already classic?) Ken Thompson's Reflections on Trusting Trust

    "You can't trust code that you did not totally create yourself." - if your binary compiler injects a backdoor in the object code, then even recompiling the compiler from source may not get you out of the woods.

    Otherwise, let point to you the (in my opinion) relevant phrases in TFA:

    Have you read all the code of your OS? Your compiler? Have your read the code of each compiler that was used in the chain, back to the very first one written in assembly/hex?

    If not, then you are really not in much of a better position than you would be using a closed source compiler.

    --
    Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
  47. There actually appears to be a C3 language by Chrisq · · Score: 1
    here does seem to be a c3 programming language. The designer's blog gives the aims as:

    C makes programming more enjoyable for serious programmers.

    C is a general-purpose programming language that supports
    – low-level programming
    – data abstraction
    – object-oriented programming
    – generic programming
    – functional programming
    – metaprogramming

    It sounds a bit like an "all things to all men" Ada or PL/1 in vapourwear

  48. Re:Threat to Computing by c0lo · · Score: 2

    You also can't trust food you didn't grow yourself. Doors and locks you didn't build yourself. People whom you haven't given birth to and watched from infancy. The level of paranoia represented by that quote is borderline hysteria. [a.s.o.]

    If you'd stop to think a moment instead of rambling...

    Speaking hypothetically, say I'd be a hacker... wouldn't it be nice to successfully attack "an always running compiler service", inject a little DLL there, and make all the applications you'd build and deploy in your organisation spy for me? Still think is hysterical paranoid? Or do you trust Microsoft to make this "compiler service" impervious?

    --
    Questions raise, answers kill. Raise questions to stay alive.
  49. Re:Threat to Computing by c0lo · · Score: 1

    If not, then you are really not in much of a better position than you would be using a closed source compiler.

    Well, even if I didn't, I'd argue I'm in a better position when using open source compilers... granted, not 100%.
    And certainly more secure if using a compiler as a tool than a compiler as a service always running... on a Windows box.

    --
    Questions raise, answers kill. Raise questions to stay alive.
  50. Re:Threat to Computing by DrgnDancer · · Score: 1

    There's at least two points of failure in your counter here. First, what Microsoft is proposing here isn't a "software as a service" compiler, the title of the article is simply wrong. It's simply a compiler that provides a lot more access to the internals than current compilers (at least current MS compilers). Anything that a hacker could do to this compiler, he could do to a normal MS compiler. He'd have to have the same level of access to your box to modify this as he would to insert new code into your current copy of VS. Second, that's not what you said. What you said was that any compiler that you haven't coded and built yourself is untrustworthy. Which is completely true, but also completely paranoid.

    It's always the case that you can only completely trust things which you have done yourself (assuming you made no errors, which is a whole nother ball of wax), but it's equally true that you can't live your life not trusting anything done by anyone else. Not if you want to live in society and participate in in human interaction in any case.

    --
    I don't need a million points of light, just two points of multi-mode fiber and a 10 Gig-E router.
  51. Welcome to the future MS by lerxstz · · Score: 2

    From TFA: "It also adds dynamic typing to the statically typed C# and Visual Basic, allowing developers to add objects and new variables to a program on the fly."

    So it turns VB/C# into...Obj-C!

    *ducks*

    --
    I chose to end my comments, not with a rim shot, but a long decaying F#7sus4
    1. Re:Welcome to the future MS by shutdown+-p+now · · Score: 1

      From TFA: "It also adds dynamic typing to the statically typed C# and Visual Basic, allowing developers to add objects and new variables to a program on the fly."

      So it turns VB/C# into...Obj-C!

      *ducks*

      TFA is clueless, since dynamic (duck) typing has been a part of C# since version 4.0, and a part of VB since version 1.0.

  52. Re:Threat to Computing by ByOhTek · · Score: 1

    I'd be more concerned with
      (1) who is administrating the computer
      (2) who is administrating the local network
      (3) who is administrating the other computers on the local network

    and the skills of this person/people, than if the computer is running windows and a compiler as OS service, or not.

    On my home network, where I control everything, I'd run it.

    On my work network, which is a bit too relaxed for my tastes, I probably wouldn't.

    --
    Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
  53. Re:Imagine a world where... by UnknowingFool · · Score: 1

    I think Apple developed Clang as the frontend with LLVM as the backend instead of GCC. It is mostly GCC compatible but the main reason probably had to do with the licensing. Clang and LLVM are BSD style while GCC is GPL.

    --
    Well, there's spam egg sausage and spam, that's not got much spam in it.
  54. Re:Threat to Computing by c0lo · · Score: 1

    On my work network, which is a bit too relaxed for my tastes, I probably wouldn't.

    Exactly my point

    --
    Questions raise, answers kill. Raise questions to stay alive.
  55. Re:Threat to Computing by plover · · Score: 1

    You're assuming that two different compilers would output identical binary images, but why would they? Different authors would implement different instructions in different ways. I'd expect that behavior only from a simple assembler.

      From there maybe you could go on to compile a fairly simple reference compiler to compile your higher level languages, as you were discussing. But I doubt you could do a meaningful binary diff of the output of the Intel C compiler and gcc.

    --
    John
  56. Re:Threat to Computing by UnknowingFool · · Score: 1

    Have you read all the code of your OS? Your compiler? Have your read the code of each compiler that was used in the chain, back to the very first one written in assembly/hex?

    You act as if limiting the number of vulnerabilities is a bad thing. Are we ever 100% secure? No. But that doesn't mean we should allow more vulnerabilities if we can help it. Will installing a good lock on my house protect it against all thieves? No. But if my current lock has a defect that allows it to be easily bypassed, I can replace it if I want.

    --
    Well, there's spam egg sausage and spam, that's not got much spam in it.
  57. Re:After your personal info... by marcosdumay · · Score: 1

    Thanks, I'm in the comments just so I can avoid RTFA.

    Wouldn't it be easier to just do what other languages do, and include an compiler in the runtime interpreter (the VM here)? Or Microsoft is too cool to imitate Lisp?

  58. Bad Article Title by Valen0 · · Score: 1

    The title on the article is misleading. The author is confusing the "Software as a Service" distribution model with the "Just In Time" (JIT) compilation model. The article subject is about how Microsoft, through the Roslyn architecture, is allowing SDK level access to the JIT compiler that runs the .NET applications on the host computer.

    --
    -Valen
    1. Re:Bad Article Title by shutdown+-p+now · · Score: 1

      Whereas you are confusing "compiler" and "JIT compiler" here. Roslyn has nothing whatsoever to do with JIT-compilation of CIL bytecode to native code. It is about compilation of C# and VB source code to CIL bytecode - but more than that, since it also exposes intermediate steps (such as AST).

      But, yeah, this still has nothing to do with SaaS.

  59. Re:After your personal info... by Tasha26 · · Score: 1

    Compile once, next thing you know, MS is launching a new app bearing great similarity to your program.

  60. Re:Threat to Computing by c0lo · · Score: 1

    There's at least two points of failure in your counter here. First, what Microsoft is proposing here isn't a "software as a service" compiler, the title of the article is simply wrong.

    Nope, this one is not: I didn't assume this service in the SaaS meaning (not this time anyway).

    Anything that a hacker could do to this compiler, he could do to a normal MS compiler.

    Not quite... lately it became easier to attack a running process than to "infect a file" (signed executables and whatnot), especially if that process is a server accepting request from other processes running under user privileges.

    Second, that's not what you said. What you said was that any compiler that you haven't coded and built yourself is untrustworthy.

    I didn't intend to say this, but to point the extra weakness: not only a file (the compiler executable image) but now an always running process as well (even if I admit, my intention wasn't clear).

    Other than that, Ken's "thought experiment" is extremely paranoid, I agree... but one can choose to pick something that may be less extreme (and possibly valid, don't know yet how probably valid) from something paranoid-to-extreme.

    --
    Questions raise, answers kill. Raise questions to stay alive.
  61. Re:Threat to Computing by maxwell+demon · · Score: 3, Insightful

    You're assuming that two different compilers would output identical binary images, but why would they?

    No, I'm not. I only assumed that two correctly working compilers would output functionally equivalent code (what I tacitly did assume was that the source-provided compiler doesn't invoke undefined behaviour, though). Note that I did not propose to compare the output of the two different compilers, but to compare the output of the one source provided compiler compiled with two different binary-provided compilers.

    So say you have the source of gcc, and binary versions of Microsoft C and Borland C.

    Step 1: You compile the gcc source code with Microsoft C (let's call the resulting binary vgcc).
    Step 2: You compile the gcc source code with vgcc (let's call the resulting binaty gvgcc).
    Step 3: You compile the gcc source code with Borland C (resulting in bgcc).
    Step 4: You compile the gcc source code with bgcc (resulting in gbgcc).
    Step 5: You compare gvgcc with gbgcc.

    If both Microsoft C and Borland C correctly translate the gcc source code (and the gcc source code contains no undefined behaviour), then vgcc and bgcc, while not the same, have equivalent behaviour. Especially they both translate the gcc source code into the same executable. In other words, gvgcc and gbgcc must be binary identical.

    --
    The Tao of math: The numbers you can count are not the real numbers.
  62. Re:first they AASed the... by Tasha26 · · Score: 1

    Deep!

  63. Re:After your personal info... by c0lo · · Score: 1
    I was wrong this time... it's not a SaaS type of compile service, it's rather like a daemon running on your local machine.

    ...for the moment at least.

    --
    Questions raise, answers kill. Raise questions to stay alive.
  64. Re:Threat to Computing by ByOhTek · · Score: 1

    Doesn't mean this is a bad idea, it just means, like every other piece of computer tech, use with caution. On a Linux or BSD box, it's pretty damn easy to mimic a service if you don't need access to ports below 1024, and screen is installed, for example. With just those two caveats, there's a lot you can do that is really unpleasant. You don't even need a "service" to patch into.

    --
    Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
  65. Re:After your personal info... by Nyder · · Score: 1

    I don't know, in the 90's I used Universities computers to compile stuff all the time. Granted the software ran on their mainframes, and wasn't produced to run on the PC's of the time.

    But other then making that point, i agree with you.

    --
    Be seeing you...
  66. Re:Threat to Computing by ByOhTek · · Score: 1

    come to think of it, if it doesn't offer any network ports, I'm not sure I would mind running that service in my work environment either.

    --
    Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
  67. Re:Threat to Computing by ByOhTek · · Score: 1

    I don't see the alternatives as a reduction of vulnerabilities in this case, unless you actually bother to look at and parse the code of the entire chain, or at some point hand recompile the binaries. I will never do this, and therefore, I gain no advantage.

    --
    Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
  68. Re:Threat to Computing by UnknowingFool · · Score: 1

    What part of adding another point of vulnerability isn't clear? Do you have to trust MS if you have Windows? Yes. But any code you write yourself is assumed not to have backdoors if you compiled it yourself. Having another party compile it for you adds a another layer of checks. Does the benefits outweigh the risks? Not in my book.

    --
    Well, there's spam egg sausage and spam, that's not got much spam in it.
  69. I made that mistake too by Kamiza+Ikioi · · Score: 1

    I heard Compiler as a Service and thought at first, "Oh great, Microsoft feels the big threat by Google App Engine, and that Python is going to take all of their business, so they've created a Python killer."

    --
    I8-D
  70. Re:My dislike for VB.Net can be summarised with th by jamiesan · · Score: 1

    VB6: Getting our strict on since 1998!

  71. Re:Threat to Computing by ByOhTek · · Score: 1

    I don't trust MS any more or less than I trust the developers of Linux and it's associated tools. So, swapping one for another doesn't really bother me. The question is - is the benefit from the tool worth the extra layer.

    So, no, nothing about the statement is lacking in clarity.

    --
    Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
  72. Re:Threat to Computing by ByOhTek · · Score: 1

    And assuming code you write/compile yourself has no back doors is idiotic. People doing that, and then selling it, is how many security issues come about..

    And the compiler would still run on your machine, not a remote machine, so... You'd still be compiling it on your machine. Yes, it's a closed source compiler, but I don't want to waste years trying to comprehend the code clusterfuck that is GCC, so GCC is just as closed source for my purposes - I don't see an added risk.

    --
    Self proclaimed typo king, and inventor of the bear destroying coffee table (patent not pending).
  73. Not a service by bsv368 · · Score: 1

    Service is a terrible word to describe this. TFA doesn't even use it except in the title. Compiler As An API. Compiler As A Library.

  74. Re:Threat to Computing by Jaqenn · · Score: 1

    Of course, another way would be to bootstrap by writing yourself an assembler in machine code, then a compiler for the source language of that compiler in assembly (using your self-written assembler), and then use that to compile the compiler you got in source (and to get an optimized compiler, compile the compiler with that compiler again). But again, few people have the resources to do so.

    I challenge that this is as hard as it sounds. The bootstrapping homebrew compiler doesn't have to be fast or efficient, and doesn't have to produce fast or efficient code, it only has to be *correct* the one time you use it. You'd then use it to compile gcc, which to my understanding is implemented using only C (not c++) features.

    So time to bootstrap a correct C-compliant compiler? In my arrogance, I bet it could be done in 6 months by a few dudes in a garage. Which if you're in a field that needs bulletproof compiler trust, is a small investment.

    --
    You are awash in a sea of fiercely stated opinions. Obvious exits are: 'File->Quit', 'Reply', and 'Page Down'.
  75. Re:Threat to Computing by dririan · · Score: 1

    The brilliant part is that you don't even need a Trusting Trust attack for this. Since no one has access to anything except what the compiler spits out, you can't verify the compiler in any way. Granted, when you disassemble it (.NET makes it too easy), you should be able to notice the nasty things. Unless you compiled your disassembler with said compiler... But my point is that the compiler doesn't have to silently sabotage itself, because no one can get to it. It could, of course, silently sabotage other compilers and debugging tools.

  76. Re:Threat to Computing by UnknowingFool · · Score: 1

    And assuming code you write/compile yourself has no back doors is idiotic. People doing that, and then selling it, is how many security issues come about..

    What? I am assuming that unless I have some sort of split personality like in Fight Club, I am not going to program a backdoor without my knowledge. Now I may not know the existence of every conceivable vulnerability but if you don't know the difference between the two, you should brush up on basic computer literacy.

    And the compiler would still run on your machine, not a remote machine, so... You'd still be compiling it on your machine. Yes, it's a closed source compiler, but I don't want to waste years trying to comprehend the code clusterfuck that is GCC, so GCC is just as closed source for my purposes - I don't see an added risk.

    Again, brush up on computers and read the article. Running compiler as a service may allow for execution of code that you do not intend. As an example, take the simple door lock which can be picked. Some door locks have numeric keypads that bypass the requirement of a physical key. That however opens up the lock to another point of attack.

    --
    Well, there's spam egg sausage and spam, that's not got much spam in it.
  77. Re:Threat to Computing by c2me2 · · Score: 1

    CHRIST, read the FUCKING article. By "service" it just means "library," not a network service. Do us all a favor and stay the fuck away from computers.

  78. Re:Threat to Computing by rev0lt · · Score: 1

    Two different compilers will obviously give you a different binary output. Even the same compiler will give you a different binary output, with different optimization flags or diffrerent architecture flags. Even with the same platform and optimization flags, a compiler might give you a different assembly for the same algorithm depending on specified alignments and/or instruction optimization.
    And yeah, your post also assumes that the cpu itself where you run the compilers isn't flawed or tampered in any way.

  79. Re:Threat to Computing by rev0lt · · Score: 1

    You think it isn't very secure using a compiler as a service that is always running, but is it ok when you grab a binary of your open source compiler of preference from a mirror that is always running? And if you download it from source, do you check all the source code and related dependencies? and how about using a compiler on a operating system that is always running? (eg. a server?) How do you decide what is more trustable?

  80. Re:Threat to Computing by spongman · · Score: 1

    wait, I don't get your logic.

    I think Microsoft understands the risks involved with allowing self-concealing malware to be released in its compiler - corporate death to the tune of >$230B. Nothing could possibly drive developers and customers from their platform faster than if such a thing were to happen. Indeed, it's in their vested interested to ensure that such a thing doesn't happen.

    Does GCC have such a risk? Even if the project were to die because of such a thing what would anyone lose beyond a little pride?

  81. Re:GCC plugins? by spongman · · Score: 1

    yeah, it's just like plugins, however it's different in almost every conceivable way.

  82. Re:Threat to Computing by spongman · · Score: 1

    wait, the java compiler API will give you data-flow analysis on the code you give it?

    no, the java compiler API is a thin wrapper around the compiler driver. little more than popen() with some support for file redirection.

    Roslyn is a whole new beast.

    just watch the video and learn.

  83. crap summary by spongman · · Score: 1

    guys, stop confusing this with SaaS, the Java compiler API, GCC plugins, etc...

    Just watch the damn video!

  84. Re:Threat to Computing by maxwell+demon · · Score: 1

    Two different compilers will obviously give you a different binary output.

    To not repeat myself, I just refer you to my previous answer.

    Even the same compiler will give you a different binary output, with different optimization flags or diffrerent architecture flags.

    If you intend to compare the generated binaries, you of course use the same flags.

    Even with the same platform and optimization flags, a compiler might give you a different assembly for the same algorithm depending on specified alignments and/or instruction optimization.

    This is about comparing output from compiling the same source code.

    And yeah, your post also assumes that the cpu itself where you run the compilers isn't flawed or tampered in any way.

    Sure. However there you can do the same: Run the thing on several CPUs and compare. You could even go to a different platform and cross-compile to your destination platform.

    --
    The Tao of math: The numbers you can count are not the real numbers.
  85. yeah right by Gravis+Zero · · Score: 1

    I think I'll stick with GCC/G++

    --
    Anons need not reply. Questions end with a question mark.
  86. Re:Slashdot groupthink ... again by nurb432 · · Score: 1

    It wasn't this bad in the old days. But i agree, its past time to jump ship.. But where to go next?

    --
    ---- Booth was a patriot ----
  87. Re:Threat to Computing by rev0lt · · Score: 1

    To not repeat myself, I just refer you to my previous answer. [slashdot.org]

    That clarifies the subject but you assume that compilers are perfect pieces of immutable software - they aren't. In the example you gave, it is expectable for gcc to have specific defines or makefile rules for each compiler, resulting on a different binary. Also, there is the problem of external dependencies - the libc implementation of Microsoft and Borland are different, even when the api is the same.

    If you intend to compare the generated binaries, you of course use the same flags.

    It is usual for different compilers to have different flags, that do not translate for the same optimization.

    This is about comparing output from compiling the same source code.

    The same source code (the same algorithm) can/will give you different binary results on different compilers, due to instruction alignment, code branching and optimization.

    Sure. However there you can do the same: Run the thing on several CPUs and compare. You could even go to a different platform and cross-compile to your destination platform.

    Yeah, and when the results don't match, you don't know which version is tampered, so you're left at where you started.

  88. Re:Threat to Computing by badkarmadayaccount · · Score: 1

    Hell, it could be an interpreter.

    --
    I know tobacco is bad for you, so I smoke weed with crack.
  89. Re:Threat to Computing by maxwell+demon · · Score: 1

    That clarifies the subject but you assume that compilers are perfect pieces of immutable software - they aren't. In the example you gave, it is expectable for gcc to have specific defines or makefile rules for each compiler, resulting on a different binary. Also, there is the problem of external dependencies - the libc implementation of Microsoft and Borland are different, even when the api is the same.

    While gcc may have compiler-specific defines, that hopefully doesn't modify the code generation part. But yes, this could in principle give a persistent difference (but it's very unlikely that this difference would be self-propagating, unless it was inserted intentionally, in which case it would make gcc not trustworthy anyway).

    The library dependence is irrelevant, because the libc gcc-compiled programs (including gcc-compiled gcc) use is completely independent from the libc used by the compiler used to bootstrap gcc.

    It is usual for different compilers to have different flags, that do not translate for the same optimization.

    The options gcc accepts don't depend on the compiler used to bootstrap it, especially not on the options that compiler supports. Again, the compare is not of binaries generated by those compilers.

    The same source code (the same algorithm) can/will give you different binary results on different compilers, due to instruction alignment, code branching and optimization.

    To the n-th time: I did not propose to compare binaries produced by the bootstrap compilers. Is this now clear?

    Yeah, and when the results don't match, you don't know which version is tampered, so you're left at where you started.

    I don't know which one was tampered with, right. But I know that most probably one was tampered with (or, less likely, one of them has a bug which propagates), which I wouldn't have known otherwise. So I know I should do more work to find out which one (e.g. by bootstrapping with a third compiler, and testing which of the now three final binaries agree). In other words, I'm not left at where I started (which is not knowing at all whether one of the compilers was tampered with).

    --
    The Tao of math: The numbers you can count are not the real numbers.
  90. Re:Threat to Computing by rev0lt · · Score: 1

    The library dependence is irrelevant, because the libc gcc-compiled programs (including gcc-compiled gcc) use is completely independent from the libc used by the compiler used to bootstrap gcc.

    The library dependence is not relevant, not only because you can build static binaries, but also because different compilers can/usually have completely different runtime implementations - the scanf() you program potentially uses is completely different if compiled with gcc and with a borland compiler.

    To the n-th time: I did not propose to compare binaries produced by the bootstrap compilers. Is this now clear?

    Well, one way to increase trust would be to build the source-provided compiler with two different compilers, then use both of these generated compilers to re-compile the compiler, and then compare the generated executables.

    So, you have gcc source, you compile it with visual studio and c++ builder, and then use the generated compilers to re-compile gcc and then compare the resulting binaries. You build gcc on visual studio with depencies of microsoft libc equivalent runtime, and with c++ builder, with borland's library. Now you have two somewhat different versions of the same compiler, but with completely different code paths (since each vendor implements their version of the C runtime). Also, because visual studio and c++ builder are different compilers, significant optimization differences (and subsequent bugs) may occur between the two builded binaries. And you propose that it is expected that both versions of gcc generate exactly the same binary, without any difference or glitch? You do have a lot of faith in software.