sorted by: new top controversial old
25

For every bytecode compiled language, the most interesting part of its implementation is its virtual machine (also referred to as the bytecode interpreter) where the bytecode execution takes place. Because this is such a crucial part of the language machinery, its implementation has to be highly performant. Even if you are not a compiler engineer, learning about such internal implementation can give you new performance tricks and insights that you may be able to use in other places of your job. And, if you are a compiler engineer then you should always look around how other languages are implemented to pickup implementation details that you may not be aware of.

In this article, we are going to be discussing the bytecode instruction format of CPython, followed by the implementation of the bytecode evaluation loop of the interpreter where the bytecode execution takes place.

30
108

In practice, the Linux community is the wild wild west, and sweeping changes are infamously difficult to achieve consensus on, and this is by far the broadest sweeping change ever proposed for the project. Every subsystem is a private fiefdom, subject to the whims of each one of Linux’s 1,700+ maintainers, almost all of whom have a dog in this race. It’s herding cats: introducing Rust effectively is one part coding work and ninety-nine parts political work – and it’s a lot of coding work. Every subsystem has its own unique culture and its own strongly held beliefs and values.

The consequences of these factors is that Rust-for-Linux has become a burnout machine. My heart goes out to the developers who have been burned in this project. It’s not fair. Free software is about putting in the work, it’s a classical do-ocracy… until it isn’t, and people get hurt. In spite of my critiques of the project, I recognize the talent and humanity of everyone involved, and wouldn’t have wished these outcomes on them. I also have sympathy for many of the established Linux developers who didn’t exactly want this on their plate… but that’s neither here nor there for the purpose of this post, and any of those developers and their fiefdoms who went out of their way to make life difficult for the Rust developers above and beyond what was needed to ensure technical excellence are accountable for these shitty outcomes.

...

Here’s the pitch: a motivated group of talented Rust OS developers could build a Linux-compatible kernel, from scratch, very quickly, with no need to engage in LKML politics. You would be astonished by how quickly you can make meaningful gains in this kind of environment; I think if the amount of effort being put into Rust-for-Linux were applied to a new Linux-compatible OS we could have something production ready for some use-cases within a few years.

...

Having a clear, well-proven goal in mind can also help to attract the same people who want to make an impact in a way that a speculative research project might not. Freeing yourselves of the LKML political battles would probably be a big win for the ambitions of bringing Rust into kernel space. Such an effort would also be a great way to mentor a new generation of kernel hackers who are comfortable with Rust in kernel space and ready to deploy their skillset to the research projects that will build a next-generation OS like Redox. The labor pool of serious OS developers badly needs a project like this to make that happen.

Follow up to: One Of The Rust Linux Kernel Maintainers Steps Down - Cites "Nontechnical Nonsense", On Rust, Linux, developers, maintainers, and Asahi Lina's experience about working on Rust code in the kernel

209

Even before the Bcachefs file-system driver was accepted into the mainline kernel, Debian for the past five years has offered a "bcachefs-tools" package to provide the user-space programs to this copy-on-write file-system. It was simple at first when it was simple C code but since the Bcachefs tools transitioned to Rust, it's become an unmaintainable mess for stable-minded distribution vendors. As such the bcachefs-tools package has now been orphaned by Debian.

From John Carter's blog, Orphaning bcachefs-tools in Debian:

"So, back in April the Rust dependencies for bcachefs-tools in Debian didn’t at all match the build requirements. I got some help from the Rust team who says that the common practice is to relax the dependencies of Rust software so that it builds in Debian. So errno, which needed the exact version 0.2, was relaxed so that it could build with version 0.4 in Debian, udev 0.7 was relaxed for 0.8 in Debian, memoffset from 0.8.5 to 0.6.5, paste from 1.0.11 to 1.08 and bindgen from 0.69.9 to 0.66.

I found this a bit disturbing, but it seems that some Rust people have lots of confidence that if something builds, it will run fine. And at least it did build, and the resulting binaries did work, although I’m personally still not very comfortable or confident about this approach (perhaps that might change as I learn more about Rust).

With that in mind, at this point you may wonder how any distribution could sanely package this. The problem is that they can’t. Fedora and other distributions with stable releases take a similar approach to what we’ve done in Debian, while distributions with much more relaxed policies (like Arch) include all the dependencies as they are vendored upstream."

...

With this in mind (not even considering some hostile emails that I recently received from the upstream developer or his public rants on lkml and reddit), I decided to remove bcachefs-tools from Debian completely. Although after discussing this with another DD, I was convinced to orphan it instead, which I have now done.

86

Last night Adam Mosseri, Head of Instagram, quitely announced the next step in the integration of Threads into the Fediverse. In addition to being able to follow Threads accounts from Fediverse/Mastodon accounts, we can now reply to and like Threads posts. Threads are taking a quiet, incremental approach to Federation, but seem genuinely commited.

From About Threads and the fediverse

If you turn on sharing to the fediverse, users on other servers can search for and follow your profile, view your posts, interact with your content, and share your content to anyone on or off their server. On Threads, you’ll be able to see the number of users on other servers who liked your post. You'll also be able to see and like their replies to your post.

515

Wedson Almeida Filho is a Microsoft engineer who has been prolific in his contributions to the Rust for the Linux kernel code over the past several years. Wedson has worked on many Rust Linux kernel features and even did a experimental EXT2 file-system driver port to Rust. But he's had enough and is now stepping away from the Rust for Linux efforts.

From Wedon's post on the kernel mailing list:

I am retiring from the project. After almost 4 years, I find myself lacking the energy and enthusiasm I once had to respond to some of the nontechnical nonsense, so it's best to leave it up to those who still have it in them.

...

I truly believe the future of kernels is with memory-safe languages. I am no visionary but if Linux doesn't internalize this, I'm afraid some other kernel will do to it what it did to Unix.

Lastly, I'll leave a small, 3min 30s, sample for context here: https://youtu.be/WiPp9YEBV0Q?t=1529 -- and to reiterate, no one is trying force anyone else to learn Rust nor prevent refactorings of C code."

64

As part of a massive migration campaign, LinkedIn has successfully moved their operations to Microsoft's Azure Linux as of April 2024, ditching CentOS 7 in the process and taking advantage of a more modern compute platform.

As many of you might already know, back on June 30, 2024, CentOS 7 reached the end-of-life status, resulting in no new future updates for it, including fixes for critical security vulnerabilities.

...

The developers have gone with the high-performing XFS filesystem, which was made to work with Azure Linux to fit LinkedIn's use case. In their testing, they found that XFS was performing well for most of their applications, except Hadoop, which is used for their analytics workloads.

When they compared the issues that cropped up, XFS came out as a more stable and reliable choice than the other candidate, Ext4.

...

Additionally, LinkedIn's MaaS (Metal-as-a-Service) team has developed a new Azure Linux Image Customizer tool for automating image generation, that takes an existing generic Azure Linux image, and modifies it to use with a given scenario. In this case, a tailored image for LinkedIn.

LinkedIn Engineering Blog: Navigating the transition: adopting Azure Linux as LinkedIn’s operating system

225

Remember, for every paid SaaS, there is a free open-source self-hosted alternative. Let's take a look at 10 FOSS tools designed to replace popular tools like MS Office, Notion, Heroku, Vercel, Zoom, Adobe, and more.

...

⭐ Repos mentioned

17

CircuitPython is an open-source implementation of the Python programming language for microcontroller boards. The project, which is sponsored by Adafruit Industries, is designed with new programmers in mind, but it also has many features that may be of interest to more-experienced developers. The recent 9.1.0 release adds a few minor features, but it follows just a few months after CircuitPython 9.0.0, which brings some more significant changes, including improved graphics and USB support.

CircuitPython is a fork of MicroPython (previously covered on LWN) with several changes designed to make the language easier for beginners to use. CircuitPython has a universal hardware API and is more compatible with the CPython standard library, for example. CircuitPython has some limitations compared to MicroPython, particularly with respect to concurrency, but is otherwise just as powerful.

...

This difference in APIs make sense when looking at the main goals of each project. MicroPython describes the language as ""a lean and efficient implementation of the Python 3 programming language that includes a small subset of the Python standard library and is optimised to run on microcontrollers and in constrained environments"". In contrast, Adafruit's "What is CircuitPython?" page says: ""CircuitPython is a programming language designed to simplify experimenting and learning to program on low-cost microcontroller boards."" Adafruit recommends CircuitPython for users who ""want to get up and running quickly"" or ""are new to programming"".

CircuitPython supports most of the core language features of CPython, although some features are missing due to the limited resources found on microcontroller boards compared to the much more powerful computers on which CPython typically runs. Many of those missing features will be the same as those on a comparison between CPython and MicroPython reports. In addition, as CircuitPython's main README explains: ""Modules with a CPython counterpart, such as time, os and random, are strict subsets of their CPython version. Therefore, code from CircuitPython is runnable on CPython but not necessarily the reverse.""

24

cross-posted from: https://lemmy.ndlug.org/post/1040526

A judge has dismissed the majority of claims in a copyright lawsuit filed by developers against GitHub, Microsoft, and OpenAI.

The lawsuit was initiated by a group of developers in 2022 and originally made 22 claims against the companies, alleging copyright violations related to the AI-powered GitHub Copilot coding assistant.

Judge Jon Tigar’s ruling, unsealed last week, leaves only two claims standing: one accusing the companies of an open-source license violation and another alleging breach of contract. This decision marks a substantial setback for the developers who argued that GitHub Copilot, which uses OpenAI’s technology and is owned by Microsoft, unlawfully trained on their work.

...

Despite this significant ruling, the legal battle is not over. The remaining claims regarding breach of contract and open-source license violations are likely to continue through litigation.

62

cross-posted from: https://lemmy.ndlug.org/post/1040526

A judge has dismissed the majority of claims in a copyright lawsuit filed by developers against GitHub, Microsoft, and OpenAI.

The lawsuit was initiated by a group of developers in 2022 and originally made 22 claims against the companies, alleging copyright violations related to the AI-powered GitHub Copilot coding assistant.

Judge Jon Tigar’s ruling, unsealed last week, leaves only two claims standing: one accusing the companies of an open-source license violation and another alleging breach of contract. This decision marks a substantial setback for the developers who argued that GitHub Copilot, which uses OpenAI’s technology and is owned by Microsoft, unlawfully trained on their work.

...

Despite this significant ruling, the legal battle is not over. The remaining claims regarding breach of contract and open-source license violations are likely to continue through litigation.

206

A judge has dismissed the majority of claims in a copyright lawsuit filed by developers against GitHub, Microsoft, and OpenAI.

The lawsuit was initiated by a group of developers in 2022 and originally made 22 claims against the companies, alleging copyright violations related to the AI-powered GitHub Copilot coding assistant.

Judge Jon Tigar’s ruling, unsealed last week, leaves only two claims standing: one accusing the companies of an open-source license violation and another alleging breach of contract. This decision marks a substantial setback for the developers who argued that GitHub Copilot, which uses OpenAI’s technology and is owned by Microsoft, unlawfully trained on their work.

...

Despite this significant ruling, the legal battle is not over. The remaining claims regarding breach of contract and open-source license violations are likely to continue through litigation.

[-] pnutzh4x0r@lemmy.ndlug.org 6 points 4 weeks ago

I agree that the amount of work for many students can get quite out of hand and to be honest when I first started teaching, I was pretty guilty of having very work intensive courses.

That said, over the years, I've worked to streamline my courses to only have what I believe to be absolutely critical to learning and have added a lot of scaffolding and automated tests (for immediate results). In general, I try to have no busy work and make sure everything assignment is meaningful (as much as it can be anyway).

Additionally, because I understand that sometimes life happens, I have built-in facilities for automate extensions for assignments and even have a system for dropping certain homeworks.

This not to say that there isn't work in my classes... it's just that the work is intended to be relevant and reasonable, which most students seem to agree with these days.

I think students should be expected to work less over a longer period of time.

I think this would be a great idea. Or rather, I think it would be great to allow students to learn at different rates... some may want to go faster, some may want or need to go slower.

I think the modern course-based education system is often too rigid and not flexible enough to adequately accommodate the needs of students with different experience levels, resources, or constraints. Something like a Montessori model would be a lot better IMHO.

[-] pnutzh4x0r@lemmy.ndlug.org 5 points 4 weeks ago

First off, 10 is an integer square root. Of 100.

Right, what I was trying to say is that 10 itself is not a perfect square. You cannot take the square root of 10 and get an integer (ie. 1, 4, 9, 16, 25, etc.).

I was told by multiple English teachers (including the head of the department) that I was a math student and should never attempt to write because I saw through the regurgitation assignments, didn't agree with teacher assessments of what Dickens "was trying to do" and had zero interest in confirming their biases.

I think that is unfortunate and probably inappropriate. I try to avoid classifying students as particular types and generally try to encourage them whenever possible to pursue whatever their interests are (even if I disagree or don't have the same interest myself).

College coursework on the whole is a waste of time reinventing wheels. I don't need to spend a couple of weeks working up to "Hello, world!" in C and as such left CS as a major my first quarter at uni.

There is a reason for reinventing wheels; it is to understand why they are round and why they are so effective. To build the future, it helps to understand the past.

That said, perhaps the course was too slow for you, which is understandable... I frequently hear that about various classes (including ones I've taught).

But teachers do this shit every day, year after year, and we blindly say they're doing important work even as they discourage people from finding their path and voice, because god forbid a 16-year-old challenges someone in their 50s.

Again, I think you've had an unfortunate experience and I think it's a good thing to challenge your teachers. I certainly did when I was a student and I appreciate it now when students do that with me. I recognize that I am not perfect nor do I know everything. I make mistakes and can be wrong.

I wish you had a more supportive environment in secondary school and I have a better understanding of your perspective. Thanks for the dialogue.

[-] pnutzh4x0r@lemmy.ndlug.org 11 points 1 month ago

Sure, some people acquire the capability through repetition. But all that matters in the end is if you are capable or not.

I guess the question is how do you develop that capability if you are cheating or using a tool to do things for you? If I use GrubHub to order food or pay someone else to cook for me, does it make sense to say I can cook? After all, I am capable of acquiring cooked food even though I didn't actually do any of the work nor do I understand how to well, actually make food.

The how is relevant if you are trying to actually learn and develop skills, rather than simply getting something done.

No, the point is to get an irrelevant piece of paper that in the end doesn't actually indicate a persons capabilities.

Perhaps the piece of paper doesn't actually indicate a person's capabilities in part because enough students cheat to the point where getting a degree is meaningless. I do not object to that assessment.

Look, I'm not arguing that schooling is perfect. It's not. Far from it. All I am saying is that if your goal is to actually learn and grow in skill, development, and understanding, then there is no shortcut. You have to do the work.

[-] pnutzh4x0r@lemmy.ndlug.org 11 points 1 month ago

Sure. If you do enough basic math, you start to see things like how 2/8 can be simplified to 1/4 or you recognize that 10 is not a perfect square root or how you could reorder some operations to make things easier (sorry, examples from my kids). Little things like that where you don't even think about it... it becomes second nature to you and that makes you a lot faster because you are not worrying about those basic ideas or mechanics. Instead, you can think about more complicated things such as which formulas to apply or the process to compute something.

As another example, since I teach computer science, a lot of novice students struggle with basic programming language syntax... How exactly do you declare a variable? What order do things go? How does a for loop work? Do you need a semicolon or parentheses, etc. If you do enough programming, however, these things become second nature and you stop thinking about it. You just seemily, intuitively, know these things and do them naturally without thinking, even though when you first started, it was really complicated and daunting and you probably spent a lot of time constructing a single line of code.

Once you develop a foundation however, you don't need to worry about these low-level things. Instead you worry about high-level issues such as how to organize larger pieces of code into functions or how to I utilize different paradigums, etc.

This is why a basketball player, for instance, will shoot thousands of shots in practice or why a piano player will play a piece over and over for many hours. It's so they don't have to think about the low-level mechanics. It becomes muscle memory and it's just natural to them.

I hope that makes sense.

[-] pnutzh4x0r@lemmy.ndlug.org 12 points 1 month ago

Thanks for the thoughtful response.

Using AI to answer a question is not necessarily preventing yourself from learning and developing mastery and understanding. The use of AI is a skill in the same way that any ability to look up information is a skill. But blindly putting information into an AI and copy/pasting the results is very different from using AI as a resource in a similar way one might use a book or an article as a resource.

I generally agree. That's why I'm no longer banning AI in my courses. I'm allowing students to use AI to explain concepts, help debug, or as a reference. As a resource or learning aid, it's fine or possibly even great for students.

However, I am not allowing students to generate solutions, because that is harmful and doesn't help with learning. They still need to do the work and go through the process, AI assisted or not.

This is a particularly long winded way of pointing out something that's always been true - the idea that you should learn how to do math in your head because 'you won't always have a calculator' or that the idea that you need to understand how to do the problem in your head or how the calculator is working to understand the material is a false one and it's one that erases the complexity of modern life. Practicing the process helps you learn a specific skill in a specific context and people who make use of existing systems to bypass the need of having that skill are not better or worse - they are simply training a different skill.

I disagree with your specific example here. You should learn to do math in your head because it helps develop intuition of the relationship between numbers and the various mathematical operations. Without a foundational understanding of how to do the basics manually, it becomes very difficult to tackle more complicated problems or challenges even with a calculator. Eventually, you do want to graduate to using a calculator because it is more efficient (and probably more accurate), but you will be able to use it much more effectively if you have a strong understanding numbers and how the various operations work.

Your overall point about how a tool is used being important is true and I agree that if used wisely, AI or any other tool can be a good thing. That said, from my experience, I find that many students will take the easy way out and do as you noted at the top: "blindly putting information into an AI and copy/pasting the results".

[-] pnutzh4x0r@lemmy.ndlug.org 25 points 1 month ago

The how is irrelevant.

What I usually tell students is that homework and projects are learning opportunities. The point isn't for them to produce a particular artifact; it's to go through the process and develop skills along the way. For instance, I do not need a program that can sort numbers... I can do that myself and there are a gazillion instances of that. However, students should do that assignment to practice learning how to code, how to debug, how to think through problems, and much more. The point isn't the sorting program... it's the process and experience.

How do you get better at say gymnastics? You do a bunch of exercises and skills, over and over.

How do you get better at say playing the guitar? You play a lot songs, over and over.

How do you get better at say writing? You write a lot, some good, some bad, over and over.

To get better at anything, you need to do the thing, a lot. You need to build intuition and muscle memory. Taking shortcuts prevents that and in the long run, hurts your learning and growth.

So viewing homeworks as just about the artifact you submit is missing the point and short-sighted. Cheating, whether using AI or not, is preventing yourself from learning and developing mastery and understanding.

[-] pnutzh4x0r@lemmy.ndlug.org 21 points 1 month ago

Maybe. It is true that people who would have cheated in the past are now just using AI in addition to the previous means. But from my experience teaching, the number of students cheating is also increasing because of how prevalent AI has become and how easy it is to use it.

AI has made cheating more frictionless, which means that a student who might not have say used Chegg (requires some effort) or copied a friend (requires social interaction) in the past, can now just open a textbox and get a solution without much effort. LLMs have made cheating much easier, quicker, and safer (people regularly get caught using Chegg or copying other people, AI cheating can be much harder to detect). It is a huge temptation where the [short-term] benefits can greatly dwarf the risks.

[-] pnutzh4x0r@lemmy.ndlug.org 1 points 1 month ago

Ok great. I pulled latest-node and it appears to be working again. Thanks for the quick fix!

[-] pnutzh4x0r@lemmy.ndlug.org 1 points 1 month ago

I am not getting any visible errors on either the client or server... the client just spins. Someone else has filed a bug report here:

https://github.com/Xyphyn/photon/issues/408

Is there any flags or environmental variables we can enable to get more debugging output?

[-] pnutzh4x0r@lemmy.ndlug.org 25 points 1 month ago

I'm a masochist, so I usually do "New". Lemmy is small enough that I can usually get through most of the new posts in a reasonable amount of time.

That said, if I want to a bit chiller experience, I will use "Scaled" which sometimes bubbles up something I might have missed.

Finally, I will use "Active" if I'm really bored and what to see what most people are engaged with... but that is pretty rare.

[-] pnutzh4x0r@lemmy.ndlug.org 1 points 1 month ago

With the latest-node or v1.31.2 docker images, I cannot get photon to load (infinite spinner). However, v1.31.2-rc.8-node works just fine for me (loads and behaves normally).

[-] pnutzh4x0r@lemmy.ndlug.org 5 points 1 month ago* (last edited 1 month ago)

I currently use Ubuntu for all my machines (desktops, laptops, and servers), but I used to use Void Linux on my machines for about 6 years, including on a couple of VPSes. Since you are familiar with Void Linux, you could stick with that and just use Docker/Podman for the individual services such as Matrix, Mastodon, etc.

In regards to Debian, while the packages are somewhat frozen, they do get security updates and backports by the Debian security team:

https://www.debian.org/security/

There is even a LTS version of Debian that will continue backporting security updates:

https://www.debian.org/lts/

Good luck!

view more: ‹ prev next ›

pnutzh4x0r

joined 1 year ago