Announcement

Collapse
No announcement yet.

Redox: A Rust-Written, Microkernel Open-Source OS

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

  • #41
    Originally posted by SpyroRyder View Post
    I'm interested to know what your definition of toy language is because Rust doesn't fit mine. It may not have much usage ... Now I've only been making small programs... Servo is written
    servo isn't written yet and will not be written for years. otherwise you pretty much nailed definition of toy language
    Originally posted by SpyroRyder View Post
    Sidenote: Not sure how you come to the conclusion that an image decoder might be non-trivial.
    i came to opposite conclusion

    Comment


    • #42
      Originally posted by pal666 View Post
      servo isn't written yet and will not be written for years. otherwise you pretty much nailed definition of toy language

      i came to opposite conclusion
      My bad, I forgot a word, the rest of the point still stands however. And i am not sure how something with 16,000 git comits counts as not written. Seriously the data is here https://github.com/servo/servo . As to you selectively sniping the part about me only making small programs, I have known the language for less than a week. I am doing small logic demos and games to get a good grasp of the language before I code larger things in it.

      Comment


      • #43
        Originally posted by duby229 View Post
        The real truth is when your CPU is running at !00% full load, the vast majority of what it's doing is waiting on latency. Perhaps a backside cache would be useful for addresses already generated, but front side cache would hurt latency badly.
        If you followed the talk, the point is that you rarely (certainly not for a simple process switch) invalidate the page table, so you don't need to look up physical addresses that often.

        Comment


        • #44
          Originally posted by pal666 View Post
          ok, name few serious projects in rust
          Also, PLEASE learn to read. i specifically mentioned future tense. That is coming from someone with disabled brain
          A curated list of Rust code and resources. Contribute to rust-unofficial/awesome-rust development by creating an account on GitHub.

          Also, the full crates.io website filled with tons of crates. I see stuff on a daily basis and libraries for almost anything you want. Servo is a perfect example of a large Rust project.

          Also, how is C++ safer in the future tense? C++ is inherently not nearly as safe as Rust due to the different type systems.

          Can C++ statically check the safety of function objects to ensure no race conditions or use after frees happen? Rust can, and at the same time it statically inlines it by default. Rust has so many features far beyond C++. Name me one thing C++ does better over rust and ill debate about it, but the community knows its faults and is always looking to improve the language, while C++ is stuck perpetually as it is.
          Last edited by vadix; 21 March 2016, 12:22 PM.

          Comment


          • #45
            Really strange thing. Microkernel to get crappy performance? ZFS to make it even worse, turning into a resource hog? MIT license to ensure corporations would not contribute back? Exotic language & kernel design to ensure there're no contributors? Hmm, failure isn't opttion, It seems it going to be hardcoded default value instead.

            Comment


            • #46
              Originally posted by vadix View Post
              A curated list of Rust code and resources. Contribute to rust-unofficial/awesome-rust development by creating an account on GitHub.

              Also, the full crates.io website filled with tons of crates. I see stuff on a daily basis and libraries for almost anything you want. Servo is a perfect example of a large Rust project.

              Also, how is C++ safer in the future tense? C++ is inherently not nearly as safe as Rust due to the different type systems.

              Can C++ statically check the safety of function objects to ensure no race conditions or use after frees happen? Rust can, and at the same time it statically inlines it by default. Rust has so many features far beyond C++. Name me one thing C++ does better over rust and ill debate about it, but the community knows its faults and is always looking to improve the language, while C++ is stuck perpetually as it is.
              There is work on adding type, bounds and lifetime checking to c++, which is quite nice.
              http://www.cppcon.org—Presentation Slides, PDFs, Source Code and other presenter materials are available at: https://github.com/isocpp/CppCoreGuidelines/blob...


              No idea how it compares to rust though.

              Comment


              • #47
                Originally posted by log0 View Post

                There is work on adding type, bounds and lifetime checking to c++, which is quite nice.
                Furthermore, those who are worried about it could use asan, ubsan, tsan and so on to get there. At the end of day, all kinds of extra checks are killing performance and if some runtime does it unconditionally, it going to hit java performance domain at very best. And expressing things the way it convenient for CPU is much easier when no crap gets in the way. C and C++ to some extent are quite unique in this regard, the only thing which gives more control on what's going on is assembly, which is non-portable and tiresome.

                Comment


                • #48
                  SystemCrasher: The so called "borrow checker" in Rust runs during compilation — you are forbidden from compiling most kinds of memory bugs. I think you will have to add Rust to your list of “unique in this regard” languages regarding performance.
                  Last edited by andreano; 21 March 2016, 03:40 PM.

                  Comment


                  • #49
                    Originally posted by CrystalGamma View Post

                    IIRC not kernel ⇔ userspace but userspace A ⇔ userspace B is the problem. In a mode switch (kernel ⇔ user) there are no TLB flushes, which are expensive, but when you remap the address space (context switch), there are. And with the ring-based security model of the x86 MMU, there is basically no way around giving every process its own address space to ensure isolation.
                    Actually there is a way around that, but not for arbitrary x86 code. My microkernel project (WIP: https://github.com/AveryOS/avery) uses software-fault isolation on processes ensuring that they are isolated. The processes all run in a single address space in kernel mode. This software-fault isolation also happens to prevent control-flow hijacking attacks, but it does have a overhead compared to regular x86 code.

                    Originally posted by duby229 View Post

                    Yeah, but address generation behind cache would be horribly slow. I know cache seems fast, but really it's just a compromise.Most time you need to have addresses readily available, and most times that's not true. Logically speaking putting the AGU behind a caching system would at minimum add that caching systems latency to address generation.

                    The real truth is when your CPU is running at !00% full load, the vast majority of what it's doing is waiting on latency. Perhaps a backside cache would be useful for addresses already generated, but front side cache would hurt latency badly.
                    What do you mean by address generation? A key benefit of having caches indexed by virtual memory (like the Mill, but unlike x86) is that you don't have to look up the physical address in the TLB before going to the caches.

                    Comment


                    • #50
                      Originally posted by Zoxc View Post
                      Actually there is a way around that, but not for arbitrary x86 code. My microkernel project (WIP: https://github.com/AveryOS/avery) uses software-fault isolation on processes ensuring that they are isolated. The processes all run in a single address space in kernel mode. This software-fault isolation also happens to prevent control-flow hijacking attacks, but it does have a overhead compared to regular x86 code.


                      What do you mean by address generation? A key benefit of having caches indexed by virtual memory (like the Mill, but unlike x86) is that you don't have to look up the physical address in the TLB before going to the caches.
                      Ah yeah, software isolated processes … I left those out because AFAICS it's next to impossible to do without GC or unsafety.
                      I'm assuming duby229 means address translation by what they posted.

                      Comment

                      Working...
                      X