Hacker News new | past | comments | ask | show | jobs | submit | chlorion's comments login

Being able to use string formatting without a heap is pretty cool.

Rusts string formatting machinery does not require any heap allocations at all, you can for example impl fmt::Write for a struct that writes directly to a serial console byte-by-byte with no allocations, and then you have access to all of rusts string formatting features available to print over a serial console!

I'm not sure about the horrifying and dangerous extensions part though, I'm not really a C++ expert so I don't know if there's a better way to do what they want to do.


I'm pretty sure that gentoo also packages ada, but it doesn't get installed by default, as its behind a USE flag.


Theres even more than just UAFs that you have to worry about in a single threaded context, but yes you are correct.

Here's a good post that talks about why shared mutability even in single threaded contexts is dangerous: https://manishearth.github.io/blog/2015/05/17/the-problem-wi...


It depends.

You can corrupt memory in such a way that allows executing arbitrary code, in which you could do anything that the process has privilege to do, which is probably reading and writing files as the current user and a lot more.


Would you mind explaining how you could do this?


I expect that the entire mode is implemented in elisp-mode.el. It's based on lisp-data-mode, but I don't expect that to handle macros (should check though).

Looking at elisp-completion-at-point and likely deeper into elisp--completion-local-symbols, I'd try to find where macroxpansion occurs, and make it conditional. Same for the explicit emacs-lisp-macroexpand.

I would also search for `(eval ` in general and maybe put it under a buffer-local flag, too, so that you won't press C-x C-e or C-M-x and execute malicious code by mistake, when you know you're working on a piece of malicious code.

Maybe instead of a defcustom, it should rather be a minor elisp-paranoid-mode which would do all kinds of things to prevent execution of the code in the buffer, or the code the buffer refers to, etc.


Imagine an engineer in any other field acting like this.

"I don't want to install air bags and these shiny safety gadgets into my cars. We have been shipping cars without them for years and it works for us and our customers."

The problem is that it doesn't actually work as well as you think, and you are putting people at risk without realizing it.


You're trying to install airbags on a motorcycle, though. The design of the vehicle/language is incompatible with airbags/lifetimes. So if you want airbags... don't use C++.

(Yes, I know about airbag vests. Let's analogize those with external static checkers.)


What if, bagxrv, is a Rust fan, just playing ya? Everyone knows Rust fans are the most vigorous developers on the internet. Just take a look at https://izzys.casa/2024/11/on-safe-cxx/


You are making a general statement about the distribution of general consumers of computer languages, complete with a long tail, and the commenter is explaining that he is an expert car driver, way out there on the long tail. This tyranny of the less capable mode is really grating, especially on a site named "Hacker News".

As usual, the answer is quite simple: "please use rust". We promise to never mention when we break out nasm.

Driver anecdote: I have antilock brakes on my Tundra, but they are annoyingly counterproductive in 4WD descending 6" or larger sandy rocky steps. Do antilock brakes work overall best for the less capable mode? Of course! Do they work best for me? No.


We learned a long time ago as an industry that the expert car drivers are not immune to causing pile ups, which makes it all our problem to solve.

Safety by default with escape hatches when absolutely necessary is the better way to go for all, even if it means some power users have to change their ways.


I used the lite version while on chromium for some time. I noticed no difference in terms of blocking ads.

The main thing I missed was the ability to block arbitrary elements with the zapper. I use this for more than just ads, so losing it is a real loss in functionality. Otherwise it worked fine.


Yeah the zapper is indispensable. Being able to filter content on platforms by the words in post titles is one of the best ways to not be exposed to toxic content.

Never leaving your subscriptions (never using the algorithm recommended feed) is not a solution because of second-hand toxicity, e.g. political posts in meme subreddits in an election year.

If anyone knows of a solution that works in Manifest V3 I'd love to hear it!


Found something, a drop-in replacement.

AdGuard AdBlocker (MV3 Beta): https://chromewebstore.google.com/detail/adguard-adblocker-m...

Copy and pasting the ublock custom filters into AdGuard seems to work.


Yup, the MV3 version requires zero permissions and in theory should be faster. These are real benefits that for some reason nobody will admit exist.

Saying anything positive about MV3 or the lite extension seems to get you downvoted without explanation though, which is a nice example of how absurd this site is when it comes to anything related to Google.

Sometimes I think downvoting should require leaving a comment and reason, because I can't see any reason to downvote this other than "google bad".


I get the security benefits, but the performance benefits seem weak. Won't the benefits of not having to run as much js to do the filtering be cancelled out by having the run additional advertising code that isn't being blocked by the lobotomised adblockers?


Sounds like the real issue is "we are replacing X with Y" and there are use-cases for both X and Y to co-exist.


and just conveniently, X has some features that the owning company doesn't like as it is antithesis to their business model. Therefore, by replacing X with Y, and touting some performance improvements (which is real, but marginal), they get to remove X with plausible deniability.


They should let them co-exist but probably they figured out it is just easier to kill V2 extensions all together. What a shame.


Reason: Removing user control from browsers is strictly bad.


Which GOOG team are you on?


He is on Extensions team. lol


> nobody will admit exist.

This is not true.

People talk about the upside of the declarative API plenty, but adding one function doesn't mean removing another, and the conflation required to use that as a defense of google is what gets downvotes.


Is uBOL as ad-removing and privacy protecting as uBO?

We aren’t talking just an extension here. If it didn’t exist, that would make web browsing insufferable to many. It is a part of web browsing itself. Let me put it as clearly as it can be:

***

uBO is a Holy Grail and gorhill is our Jesus Christ.

***

If MV3 (and further development) tries to touch it in any inappropriate way, comments promoting it deserve 5x downvote mutiplier without the usual -4 limit.


"in theory" is not a real benefit


you get to downvote?


When you get Karma of 501 or more…


There are lots of emulation methods but interpretation is probably(?) the most common or at least very common.

Interpretation involves writing a VM that represents the state of various parts of the machine, and executes instructions that change the state of the VM, with varying levels of accuracy.


Yup you can write a garbage collected interpreter for a programming language with no unsafe code at all, even for languages that have complex data structures like doubly linked lists in them.

Using something like a slotmap to store the languages objects in is what I would do, and your GC would just involve removing values from the map after marking everything that's reachable.

The popular slotmap crate on crates.io does contain unsafe code but nothing about the data structure inherently requires unsafe.


Consider applying for YC's Spring batch! Applications are open till Feb 11.

Guidelines | FAQ | Lists | API | Security | Legal | Apply to YC | Contact

Search: