Announcement

Collapse
No announcement yet.

Making The Case For Using Rust At Low Levels On Linux Systems

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

  • #41
    Originally posted by davidbepo View Post
    if torvalds didnt accept c++ for being among other things, unstable (sounds like a joke but it isn't). do you think he wil accept rust?

    i don't
    last I have seen - he did accept C++ code.

    Comment


    • #42
      Originally posted by Hi-Angel View Post
      Just C++, really?.

      Also, from my little experience in both GTK and Qt, the last is better to code. E.g. I remember, as part of a student thesis, I was trying to fix a problem in GTK GUI of Yi with cursor, which doesn't become «big black box» in «normal mode», like it is in vim. Long story short, it turned out GTK didn't have that capability. In GVIM it is done via custom widget, and someone told a story, that for alike needs they hacked the mode of cursor when you press «Insert» key.

      I also met some other problems, which I badly remember, but what I do remember — I googled whether they could be easily done in Qt, and yes, they are! Plus — though it is subjective — to me Qt apps looks much prettier than GTK ones. So I consider Qt to be better than GTK.

      The only thing I'm miss in Qt, is that GTK allows creating global keybindings for textboxes via .gtkrc, e.g. for movement like in Emacs.
      Also, I find it irritating that, during the GTK+ 3.x series, it's become more and more difficult to maintain the desktop experience I had under GTK+ 2.x without regressions and their excuse is "GTK+ 3.x is an unstable series". If it's an unstable series, attack, name, and shame any distro which ships GNOME 3 as if it's a stable desktop! GNOME isn't the only consumer of the GTK+ APIs!

      Like the LXDE developers, I'm in the process of upgrading from GTK+ 2.x to Qt 5.x and the main thing limiting my adoption of Rust is that, as someone focused on UI/UX design, most of my creations are I/O-bound things which glue together non-QML (QML native widget support is too immature) UI elements in novels ways, so my creations will be 99% PyQt regardless of whether I use Rust and adding another language just complicates the build process.

      (I really want to be able to write pure Rust apps because the type system would greatly simplify the task of bringing all of my projects, old and new, up to my new unit testing standards... especially given how defining a state machine within Rust's type system lets you get compile-time validation of proper use of a wire protocol or file format.)

      Comment


      • #43
        Originally posted by mmstick View Post

        Why should anyone care about Qt support? Qt isn't supported by any language other than C++, and it's not the best graphical toolkit for Linux. Cross-platform UI toolkits tend to use GTK3 as the backend for Linux, and Rust has amazing support for GTK3. ...
        I moved from Gtk3 to Qt5 after dealing with it for like 2 years and finding out it's crap and at the time poorly supported on windows (at the time). The shittiest part is that it's written in C which is too low level, Python is a hog because it's interpreted that's one of the reasons Canonical couldn't keep up its software center because Python like any interpreted language only scales so much. And the C++ bindings to Gtk3 are crappy because they're still a wrapper around C logic with some bit of OO design. Anyone who tells me C++ isn't good for graphical apps, or any iteration of this idea, is only telling me he's not worth my time.

        Comment


        • #44
          Originally posted by cb88 View Post

          Because ADA derives from Pascal... VHDL also hails to ADA syntax. The problem is that it is so verbose that it is cumbersome...this could be alleviated somewhat with better tooling but it either doesn't exist or costs an appendage and half your offspring.

          Emacs is probably as good as it gets free software wise for VHDL and ADA but I don't grok it.
          The verbosity of Ada is intentional: since the language aimed to be used for safety critical systems, code readability and clarity was very important, even for some newcomers or people not familiar with the language (but with some IT skills, though). When I see modern C++, it's just klingon for non C++ developers. Even for me, although I did program in C++ for years a decade ago.

          About tools, there's an IDE (GNAT Programming Studio) and an Eclipse plugin that you can get for free (GPL). And of course, Emacs ;-)

          Comment


          • #45
            Originally posted by Steffo View Post
            Don't compare rust with Ada. Ada does runtime checks, rust compile time checks. And rust does not have a GC like Ada.
            Runtime checks can be disabled at compile time, and Ada does also a lot of static checks and analysis at compile time.

            GC is optional for Ada, and the GNAT compiler (probably the most popular compiler, based on GCC) does not provide one, so we can almost consider there is no GC unless you target a specific compiler.

            Comment


            • #46
              Originally posted by totoz View Post

              Runtime checks can be disabled at compile time, and Ada does also a lot of static checks and analysis at compile time.

              GC is optional for Ada, and the GNAT compiler (probably the most popular compiler, based on GCC) does not provide one, so we can almost consider there is no GC unless you target a specific compiler.
              Ok, you can disable run time checks, but how do you check then for data races? As far as I know, rust is the only language which can prevent data races at compile time.

              The same is true for segmentation faults and dangling pointers without a GC. You can't compile code with rust if there is a possibility for a dangling pointer or segmentation faults.

              Comment


              • #47
                Originally posted by Hi-Angel View Post
                Just C++, really?.

                Also, from my little experience in both GTK and Qt, the last is better to code. E.g. I remember, as part of a student thesis, I was trying to fix a problem in GTK GUI of Yi with cursor, which doesn't become «big black box» in «normal mode», like it is in vim. Long story short, it turned out GTK didn't have that capability. In GVIM it is done via custom widget, and someone told a story, that for alike needs they hacked the mode of cursor when you press «Insert» key.

                I also met some other problems, which I badly remember, but what I do remember — I googled whether they could be easily done in Qt, and yes, they are! Plus — though it is subjective — to me Qt apps looks much prettier than GTK ones. So I consider Qt to be better than GTK.

                The only thing I'm miss in Qt, is that GTK allows creating global keybindings for textboxes via .gtkrc, e.g. for movement like in Emacs.
                Perhaps you should have looked at your list more closely. The bindings that are available are largely incomplete QML bindings for all of those languages, and only Python and C# have Qt bindings, which are more than likely also incomplete. Creating bindings from software written in C++ isn't feasible, and hence almost all software libraries are written exclusively in C. GTK has a major advantage of being written in C and thus it is easier to develop bindings for, and can you really beat the documentation that GTK has with Rust now? I have met zero problems with developing GTK3 applications using Rust and Glade. The GTK-rs team has managed to perform a stellar job at abstracting the GTK API in a Rusty manner. Developing modern GTK3 applications with client-sided decorations is super simple.

                Comment


                • #48
                  Originally posted by ssokolow View Post

                  Also, I find it irritating that, during the GTK+ 3.x series, it's become more and more difficult to maintain the desktop experience I had under GTK+ 2.x without regressions and their excuse is "GTK+ 3.x is an unstable series". If it's an unstable series, attack, name, and shame any distro which ships GNOME 3 as if it's a stable desktop! GNOME isn't the only consumer of the GTK+ APIs!

                  Like the LXDE developers, I'm in the process of upgrading from GTK+ 2.x to Qt 5.x and the main thing limiting my adoption of Rust is that, as someone focused on UI/UX design, most of my creations are I/O-bound things which glue together non-QML (QML native widget support is too immature) UI elements in novels ways, so my creations will be 99% PyQt regardless of whether I use Rust and adding another language just complicates the build process.

                  (I really want to be able to write pure Rust apps because the type system would greatly simplify the task of bringing all of my projects, old and new, up to my new unit testing standards... especially given how defining a state machine within Rust's type system lets you get compile-time validation of proper use of a wire protocol or file format.)
                  There's nothing stopping you from learning how to use GTK-rs with Rust to create a modern GTK3 application with client-sided decorations. It has better documentation than any of the pre-existing officially supported languages, the bindings are automatically generated and the API takes full advantage of Rust and it's powerful type system. I had zero issues with learning how to develop GTK3 applications for the first time, using Rust.

                  Comment


                  • #49
                    Originally posted by cl333r View Post

                    I moved from Gtk3 to Qt5 after dealing with it for like 2 years and finding out it's crap and at the time poorly supported on windows (at the time). The shittiest part is that it's written in C which is too low level, Python is a hog because it's interpreted that's one of the reasons Canonical couldn't keep up its software center because Python like any interpreted language only scales so much. And the C++ bindings to Gtk3 are crappy because they're still a wrapper around C logic with some bit of OO design. Anyone who tells me C++ isn't good for graphical apps, or any iteration of this idea, is only telling me he's not worth my time.
                    C++ isn't good for anything. There's good reason why everyone is moving away from C++ and using other languages instead, and why both Google and Mozilla decided to attempt to ditch their usage of C++ for Go and Rust respectively. C++ really isn't good for software libraries either due to C++ not having a stable exportable interface. That's a good reason why everyone writes their software libraries in C, and why all languages implement a C ABI as the foreign interface of choice. Rust, likewise, has the ability to export Rust libraries with a C interface, and many languages are now starting to take advantage of that, including Python and Ruby.

                    Comment


                    • #50
                      Originally posted by totoz View Post
                      The verbosity of Ada is intentional: since the language aimed to be used for safety critical systems, code readability and clarity was very important, even for some newcomers or people not familiar with the language (but with some IT skills, though). When I see modern C++, it's just klingon for non C++ developers. Even for me, although I did program in C++ for years a decade ago.

                      About tools, there's an IDE (GNAT Programming Studio) and an Eclipse plugin that you can get for free (GPL). And of course, Emacs ;-)
                      Although I do agree about C++ being unreadable for no reason when templates are come in place, I'd say that «verbosity» have little to do with code readability. More over, C++ with templates is verbose, too verbose!

                      The most readable language from ones that I know, in my opinion, is Haskell (so called ML-syntax), and it by no means is verbose, the code is very short. I even have for a year in mind the idea of creating a parser for a text editor, which would translate on the fly parts of code in C or C++ or C# or whatever, into Haskell like syntax look — i.e. the real code remains unchanged, it's just the reader sees it like this (the idea though not even close to its realization for a number of different reasons).

                      I'm not saying anything against Ada though, as I don't know this language.

                      Comment

                      Working...
                      X