• Otter@lemmy.ca
    link
    fedilink
    English
    arrow-up
    4
    ·
    edit-2
    2 months ago

    Linux Foundation

    The slide people are mentioning

    In text:

    This is a brief summary of Servo’s project history. The project was started by Mozilla in 2012, at that time they were developing the Rust language itself (somehow Mozilla used Servo, a web rendering engine, as a testing project to check that Rust language was good enough). In any case we cannot consider it really “new”, but Servo is way younger than other web engines that started decades before.

    In 2020, Mozilla layoff the whole Servo team, and transferred the project to Linux Foundation. That very same year the Servo team had started the work in a new layout engine. The layout engine is an important and complex part of a web engine, it’s the one that calculates the size and position of the different elements of the website. Servo was starting a new layout engine, closer to the specifications language and with similar principles to what other vendors were also doing (Blink with LayoutNG and WebKit with Layout Formatting Context). This was done due to problems in the design of the original layout engine, which prevented to implement properly some CSS features like floats. So, from the layout engine point of view, Servo is quite a “new” engine.

    In 2023, Igalia took over Servo project maintenance, with the main goal to bring the project back to life after a couple of years with minimal activity. That very same year the project joined Linux Foundation Europe in an attempt to regain interest from a broader set of the industry.

    A highlight is that the project community has been totally renewed and Servo’s activity these days is growing and growing.

    The WPT scores should give an idea of how “ready” it is: https://servo.org/wpt/

    It shows that the situation in 2023 was pretty bad, but today Servo is passing more than 1.7 million subtests (a 92.7% of the tests that we run, there are some tests skipped that we don’t count here).

    • Apathy Tree@lemmy.dbzer0.com
      link
      fedilink
      English
      arrow-up
      0
      ·
      2 months ago

      This makes me really curious in a way I’m not really sure how to search for (and I certainly don’t expect you to have an answer, but maybe someone does)…

      How does one actually go about developing a new coding language? I assume it’s something that you need to…… translate to assembly in some way (I’m not advanced techie, but my understanding is that at core everything is assembly, and code languages are on top of that)? And what’s the purpose of developing more languages anyway?

      • ayyy@sh.itjust.works
        link
        fedilink
        English
        arrow-up
        2
        ·
        edit-2
        2 months ago

        Edit: TL;DR look up “toy languages” to see people experimenting and trying shit.

        This is an entire branch of computer science that people dedicate their lives to, called language design. You’re correct that we use software to translate a programming language into assembly language. That software is called a compiler.

        As far as developing new languages, typically one starts by defining a “formal grammar”, typically in the .lex format. Since writing a whole compiler can be complicated and time consuming, most people just build off of the work of others and adapt an existing compiler such as “LLVM” to understand the grammar of their new language.

        It sounds crazy to the uninitiated, but the best way to start learning about how to make computer languages is to learn about what a Turing tape machine is, and what it’s capable of. Then you will be able to understand what the difference between a “context-free” grammar and a “stateful” grammar.

        • Apathy Tree@lemmy.dbzer0.com
          link
          fedilink
          English
          arrow-up
          1
          ·
          2 months ago

          Excellent thanks, I’ll look into that, and thank you for the information :)

          You say “we” which hints that you have (some?) experience in the field, do you have any insight as to why one would want to create a new language rather than just helping to refine an existing one or something? Do they end up too bloated or do they function inherently differently or some other thing I haven’t thought of…?

      • Otter@lemmy.ca
        link
        fedilink
        English
        arrow-up
        1
        ·
        edit-2
        2 months ago

        While I don’t have a direct answer, I know that my university had some courses dedicated to this topic. I think these are some of them:

        https://www.students.cs.ubc.ca/~cs-311/2025W1/nav/goals.html

        https://www.cs.ubc.ca/course-section/cpsc-411-201-2020w

        https://www.cs.ubc.ca/~rxg/cpsc509-spring-2024/

        The second one is described as

        The goal of this course is to give students experience designing, implementing, and extending programming languages. Students will start from a machine language, the x86-64 CPU instruction set with Linux system calls (x64), and incrementally build a compiler for a subset of Racket to this machine language. In the process, students will practice building, extending, and maintaining a complex piece of software, and practice creating, enforcing, and exploiting abstractions formalized in programming languages.

        The course assumes familiarity with basic functional programming in Racket, and some simple imperative programming in assembly.

        Those links might give you something to search off of?

        And what’s the purpose of developing more languages anyway?

        At some level, I think it’s this:

        https://xkcd.com/927/