HackerTrans
TopNewTrendsCommentsPastAskShowJobs

yvdriess

no profile record

Submissions

Two Paths to Memory Safety: CHERI and OMA

ednutting.com
50 points·by yvdriess·9 mesi fa·42 comments

comments

yvdriess
·8 giorni fa·discuss
Having played it: yep! It's a solitaire Mankala/Awele game. You use the sowing mechanics to try to clear the board, with chains scoring exponential points.
yvdriess
·15 giorni fa·discuss
I can also recommend the manga, the first vol. It's packed with interesting ideas and author footnotes that the 1995 hints at but has no time to elaborate on.

E.g. In the movie the protagonist glances an office worker that looks like her. The manga has her explain that she looks like a cheap generic model to hide the fact she is full of expensive specialized government tech. I always think of that scene when I put an expensive work laptop in a ratty backpack.
yvdriess
·29 giorni fa·discuss
Hanging out in programming language IRC channels (quakenet shoutout) makes you realize pretty quickly why experts in said channels and newsgroups are such irritable grumps whenever someone asks a question that smells like homework assignment.

I also grew to understand the value of people digging deeper into the underlying issue, instead of just answering "how do you do X in Y". The usual reaction was "I don't want to explain to you why I want to do it like this. Just tell me how to do this!"
yvdriess
·29 giorni fa·discuss
The binary view is mostly true, unless it's for events or problems they are themselves familiar with. There is a term for this, but can't for the life of me remember it: People think the problems they are dealing with are infinitely more nuanced, complex and unique than the problems other people are dealing with.
yvdriess
·2 mesi fa·discuss
Play on Cilk?
yvdriess
·2 mesi fa·discuss
And here I thought drawing graphs in TikZ was doing it manually.

Love the article, this is why I browse HN.
yvdriess
·2 mesi fa·discuss
And that's a shame, but the relevant workloads typically run on server class CPUs.
yvdriess
·2 mesi fa·discuss
> Hard to make a better wheel.

Pet peeve: stupid analogy seeing how wheels kept being improved throughout the millennia with every new technology. The only thing in common is that it's round.

Similarly, DRAM in any way you see it has been improving to the point of barely being recognizable since the 70s.

That said, DIMMs and the whole bus idea is in dire need of getting a new type of bearing.
yvdriess
·2 mesi fa·discuss
Just to highlight: in contrast with fossil fuels, at least nuclear waste is something we can capture, creating a storage problem.
yvdriess
·3 mesi fa·discuss
AmbientTalk did this. I used it for a demo where I dragged a mp3 player's UI button to another machine, where pressing play would play it back on the originator's speakers. Proper actor programming in the veins of E and Erlang.

https://soft.vub.ac.be/amop/
yvdriess
·3 mesi fa·discuss
Tournament parallelism is the technical term IIRC.
yvdriess
·3 mesi fa·discuss
somethingaweful forums are still very much alive
yvdriess
·4 mesi fa·discuss
Anyone else clicked on this expecting an article about Go Generics?
yvdriess
·4 mesi fa·discuss
Ignoring the snark for a second. It's not because you are unfamiliar with the go toolchain that it's inherently bad, nor does it put you in a good position to give accurate criticism.

- "tea" is an explicit alias that was added to the import statement in the tutorial examples, which you did not reflect in your snippet:

    import tea "charm.land/bubbletea/v2"

- The following also just works as you expected, but directly assumed wouldn't work:

  import github.com/charmbracelet/bubbletea
The only surprise here is that the repository authors decided to change the name of the module between v1 and v2 of the package. The git branch tagged v2 contains a module named 'charm.land/bubbletea', earlier v1 branches are named 'github.com/charmbracelet/bubbletea'. That's on them for breaking convention and surprising users, the go toolchain does not factor into, this beyond supporting versioning by naming convention.
yvdriess
·4 mesi fa·discuss
I would be fine with a chaotic bubbly mess of an outside presentation, if the libraries were more robust and foundational. At the moment the underlying code, when you scratch the surface, have the feel of things thrown together to be replaced at later date.

I bounced off of bubble tea not because of the aesthetics and the unhelpful naming, but because of the programming model: a MVC-architecture cribbed from the Elm language. Why? It completely takes over and rips apart my CLI structure. A CLI is not a DOM or System.Windows.Forms, MVC is scattering around logic and adding indirection layers needlessly.

I am still using huh? and vhs, but their libraries have the feel of looking really good in demo and in the provided examples, but break down quickly when coloring just outside those intended lines.
yvdriess
·4 mesi fa·discuss
Everything that was old will become new again. Content/structural version control used to be a research field. Pharo still uses one afaik https://scg.unibe.ch/archive/papers/Nier13bMonticello.pdf
yvdriess
·4 mesi fa·discuss
Yeah. It's telling that this story is about their discord channel, not Teams.
yvdriess
·4 mesi fa·discuss
The problem is that there is no baseline for measuring GC overhead. You cannot turn it off, you can only replace and compare with different strategies. For example sbrk is technically a noop GC, but that also has overhead and impact because it will not compact objects and give you bad cache behavior. (It illustrates the OP's point that it is not enough to measure pauses, sbrk has no pauses but gets outperformed easily.)

You could stop collecting performance counters around GC phases, but you even if you are not measuring the CPU still runs through its instructions, causing the second order effects. And as you mentioned too-short-to-measure barriers and other bookkeeping overheads (updating ref counters etc) or simply the fact that some tag bits or object slots are reserved all impact performance.

There is a good write-up of the problem and a way to estimate the cost based on different GC strategies, as you suggested, here: https://arxiv.org/abs/2112.07880

The way I found to measure a no-GC baseline is to compare them in an accurate workload performance simulator. Mark all GC and allocator related code regions and have the simulator skip all those instructions. Critically that needs to be a simulator that does not deal with the functional simulation, but gets it's instructions from a functional simulator, emulator or PIN tool that does execute everything. It's laborious, not very fast and impractical for production work. But, it's the only way I found to answer a question like "What is the absolite overhead of memory management in Python?". (Answer: lower bound walltime sits around +25% avg, heavily depending on the pyperformance benchmark)
yvdriess
·5 mesi fa·discuss
Mandatory mention of notable actor languages:

  - Erlang and Elexir
  - E
  - AmbientTalk
yvdriess
·6 mesi fa·discuss
And they could be 0- or 1- indexed? :P