Announcement

Collapse
No announcement yet.

Microsoft Outs .NET Core 3.0 With Continued Linux Support & Better Performance

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

  • #21
    Originally posted by ssokolow View Post
    It's possible to incrementally switch a codebase from C to C++ but that's not the big problem.
    it is possible to switch, but it is harder to switch than to do it since beginning
    Originally posted by ssokolow View Post
    Both the Linux kernel developers [2] and the Microsoft kernel developers agree that lots of C++ language features don't play nice with requirements for kernel-mode coding
    lol, you are quoting people who think that c++ is object oriented language. garbage in - garbage out. all this on top of extensive manual oop in kernel
    ms post discusses something entirely irrelevant for linux kernel. and for non-msvc c++ in general. nevertheless, in summary it says "Microsoft neither endorses nor prohibits the use of C++ for kernel-mode drivers." and "Microsoft is actively investigating ways of making C++ more usable in the kernel"
    Originally posted by ssokolow View Post
    , so you wind up using a very restricted subset of C++ if you go that route, removing most of the worth in doing it and risking adding "subtly problematic language constructs creeping in" as another threat to be audited for.
    i know many large projects using restricted subset of c++ and none of them wants to switch to c. btw, kernel is already written in very restricted subset of c, so this point is moot.
    arduinos are programmed in restricted c++ because nobody told them that restricted c is better.
    it's like "if you are going to lose your legs, why don't lose your hands at the same time".
    plain c has no shortage of problematic language constructs like pointer casts or macros
    Originally posted by ssokolow View Post
    The OSDev Wiki gives a neutral rundown of what you have to implement, modify, or disable/avoid to make C++ suitable for kernel development.
    no, this wiki discusses some (compiler-specific)implementation details, not something inherent to c++.

    in any case, to disprove any number of "it can't be done" i need only one counterexample. https://en.wikipedia.org/wiki/IncludeOS
    Last edited by pal666; 09-25-2019, 08:24 PM.

    Comment


    • #22
      Originally posted by ed31337 View Post
      Microsoft has a long and proven track record of pulling the rug out from under their third party developers, over and over again.
      Those projects weren't open source.

      Comment


      • #23
        Originally posted by pal666 View Post
        in any case, to disprove any number of "it can't be done" i need only one counterexample. https://en.wikipedia.org/wiki/IncludeOS
        You're better off using Haiku or L4 as your example because they're examples of "Complete" OSes, rather than him being able to quibble about IncludeOS not being "real" due to all the features it lacks like virtual memory and syscalls.

        Comment


        • #24
          Originally posted by fuzz View Post
          Those projects weren't open source.
          .Net Core 3.0 is a MIT license with a CLA to submit code with a patent license.

          http://endsoftpatents.org/2014/11/ms-net/

          That patent license was looked into in 2014 and is not really changed.

          Really I would not call .Net Core open source once you read the fine print.

          1) The patent license only covers you if you are shipping binaries made from unmodified source from Microsoft.
          2) to modify source that Microsoft has you have to agree to CLA with clauses to allow Microsoft to closed source in future.

          Basically Microsoft here has something that appears to have a open source license with MIT license then places a patent license that effectively takes away the open source nature of the MIT license. This is shared source not open source. As in we share the source with you with all the means to pull the rug out from under you when ever we see fit.

          Comment


          • #25
            Originally posted by pal666 View Post
            i know many large projects using restricted subset of c++ and none of them wants to switch to c. btw, kernel is already written in very restricted subset of c, so this point is moot.
            True Linux uses a subset of C but its also extend C with sparse features. But this is not the only problem. Some of the C++ restricted words like the word class are in fact names of parts of Linux kernel data structures. So in fact using C++ in kernel space is still more restrictive than using C + sparse.

            You have to remember you have items like usb are that things are call in the specifications "class" and other C++ restricted words. Yes namespace is another thing that is a name of a item inside the Linux kernel. If you dig you will find a lot of the C++ restricted words have been used in the Linux kernel source and it makes the structures very descriptive and match the specification sheets.

            So no the point about C++ is being restrictive is not moot. Making it harder to compare the driver source to the hardware specification sheets really are not a help and is one of the problems of having done your OS in C++. So using C++ in kernel space need to give some advantage or you are shooting self in foot.

            Comment


            • #26
              Originally posted by oiaohm View Post

              .Net Core 3.0 is a MIT license with a CLA to submit code with a patent license.

              http://endsoftpatents.org/2014/11/ms-net/

              That patent license was looked into in 2014 and is not really changed.

              Really I would not call .Net Core open source once you read the fine print.

              1) The patent license only covers you if you are shipping binaries made from unmodified source from Microsoft.
              2) to modify source that Microsoft has you have to agree to CLA with clauses to allow Microsoft to closed source in future.

              Basically Microsoft here has something that appears to have a open source license with MIT license then places a patent license that effectively takes away the open source nature of the MIT license. This is shared source not open source. As in we share the source with you with all the means to pull the rug out from under you when ever we see fit.
              Legally or not you can take the source code and do whatever you want with it. This was not possible before.

              Comment


              • #27
                Originally posted by Luke_Wolf View Post
                You're better off using Haiku or L4 as your example because they're examples of "Complete" OSes, rather than him being able to quibble about IncludeOS not being "real" due to all the features it lacks like virtual memory and syscalls.
                includeos is nice example because every application in it is kernel-mode code. that's why it doesn't need such user-mode supporting stuff as virtual memeory and syscalls

                Comment


                • #28
                  Originally posted by oiaohm View Post
                  True Linux uses a subset of C but its also extend C with sparse features. But this is not the only problem. Some of the C++ restricted words like the word class are in fact names of parts of Linux kernel data structures. So in fact using C++ in kernel space is still more restrictive than using C + sparse.
                  but it doesn't mean that c++ is bad for kernel-mode code. it only means that in c++ you have few additional reserved words, they are reserved for user-mode code just as well
                  Originally posted by oiaohm View Post
                  You have to remember you have items like usb are that things are call in the specifications "class" and other C++ restricted words.
                  i know, naming things is the second hardest computer science problem, but this instance has well known solution with "klass" or "Class" or "class_"

                  Comment


                  • #29
                    Originally posted by pal666 View Post
                    but it doesn't mean that c++ is bad for kernel-mode code. it only means that in c++ you have few additional reserved words, they are reserved for user-mode code just as well
                    Not the same problem in usermode.

                    Originally posted by pal666 View Post
                    i know, naming things is the second hardest computer science problem, but this instance has well known solution with "klass" or "Class" or "class_"
                    Well known solution that those writing specification for hardware will have used class, klass, Class and class_ in the specification sheet to mean different things.

                    In usermode you mostly don't have to work with specifications that make you wonder if the person decided they would have a few magic mushrooms before writing it. Manufacture specifications can be that bad so when dealing with those disasters you really don't want to be thinking about is this what I am typing on a reserved world list and what am I going to name this or what did the other person name this.

                    https://elixir.bootlin.com/linux/latest/ident/class
                    Yes the word class in Linux kernel is used a huge number of times. Yes being able to use class where the specification says class gives you a good chance of guessing what the structure name will be from the specifications. Remember you did not come up with a single solution to not being able to use the for word class. Let alone all the other extra reserved words.

                    Think this multiplying with each extra reserved word and how developers picking different versions of the word class/the other C++ reserved words can result in not seeing that you have in fact declared the same structure twice so now have duplicate non synced lists leading to major headaches to fix. Yes some of the early Windows NT driver disasters was caused by this so this is not theory.

                    Increasing the reserved word list does bring it fair share of problems to those working on kernel development by making what should be straight forwards and simple complex having to guess what another person named it and screwing up because of this extra complexity.



                    Writing drivers for hardware is hard at times and those writing specifications don't make your life easy.

                    By the way some C++ compilers are case insensitive on the word class. Class, CLASS and class can all solve to the same thing this happens to be C++ compilers compatible with cfront stuff yes that compatibility also takes out class_. So yes klass were valid the Class was not a valid solution if you are going cross C++ compilers. So the C++ restricted word list is a little bigger than people first expect as well.



                    Kernel space and userspace are different classes of problems. The reserved words in userspace are no where near the same nightmare.

                    Comment


                    • #30
                      Originally posted by fuzz View Post
                      Legally or not you can take the source code and do whatever you want with it. This was not possible before.
                      Legally you can view the code. Legally due to the licensing you cannot modify it without submitting those modifications to Microsoft. If you modify without doing that you have hope Microsoft does not patent attack you.

                      Be sides before Microsoft published the source under this shared source. There was a Shared Source Initiative from 2001 where you could have looked at the .net source code with the same restrictions on modification after you signed the NDA.

                      So all Microsoft dropped was the requirement for you to sign a NDA to see it. Fairly much everyone who requested to see the source of .net and was willing to sign the NDA got to see it.

                      Really Microsoft has not given you as much as you are making out Fuzz.

                      Comment

                      Working...
                      X