18 ms·
Shadow: New browser engine made almost entirely in JavaScript
- doublerabbit 3y agoFreeBSD, FireFox 115.0 - Fails. I get a page of White and Black and <shadow> as a title.
- DarkNova6 3y agoThis guy knows his audience well. He answers the question of "but why?" in the first sentence: > So I started making a browser engine (for fun) a few days ago, it felt kind of inevitable so here we are And I got to admit, it is pretty neat.
- zzzbra 3y agoyet one still feels compelled to ask... pretty neat indeed.
- dirtyhippiefree 3y agoI’m hearing: I did it for fun…never considered the possibility of JavaScript rootkits, because there’s no fun in that…
- moffkalast 3y agoThis all reminds me of that description of the gigantic rover wheel from KSP: > The RoveMax Model 3 was developed in total secrecy by Kerbal Motion's R&D team over the course of a year and a half. When it was finally revealed to the company's chairman, he stared in shock, screamed 'WHY', and subsequently dropped dead on the spot. The reaction is about the same, anyway.
- toast0 3y agoI mean, I wrote an IRC client in mIRC script... It was fun (and not very usable)
- Almondsetat 3y agoA shadow of the former self
- Pr0ject217 3y agoI don't think it's working for me (none of the keybinds work, and I don't see the fps counter). Brave, script-blocking disabled.
- bsimpson 3y agoDid you click the demo? The linked page has a screenshot of the engine. You have to click through to get the full viewport experience (with keybindings).
- dugmartin 3y agoIt is a little unclear. You have to click the "Try it in your browser!" link: https://shadow.goose.icu/ https://shadow.goose.icu/
- _Algernon_ 3y agoThe inevitable question then: Can you run this browser engine within itself, and if so, how many layers deep can you get before the universe implodes?
- kube-system 3y ago> https://shadow.goose.icu/?https://shadow.goose.icu https://shadow.goose.icu/?https://shadow.goose.icu > Fatal error Not quite!
- runnr_az 3y agohaha... I knew I wasn't gonna be the only one who tried that.
- forgotpwd16 3y agoAnything I tried returns fatal error. Is this really how it meant to browse a URL?
- kube-system 3y agoThat sounds consistent with the intro: > known issues > basically every site doesn't work ;)
- devman0 3y agoNot everything! I got https://shadow.goose.icu/?http://captive.apple.com/ https://shadow.goose.icu/?http://captive.apple.com/ to work!
- MatmaRex 3y agohttps://shadow.goose.icu/?https://nostalgia.wikipedia.org/wiki/HomePage https://shadow.goose.icu/?https://nostalgia.wikipedia.org/wi...
- ksherlock 3y agoIt's indistinguishable from Netscape running on MacOS 8.
- mmsimanga 3y agoTurtles all the way down
- bioneuralnet 3y agoOne assumes the JavaScript engine is just "eval(...)".
- canadahonk 3y agoNope! It uses Wasm (really WASI) builds of existing JS engines ;)
- jagged-chisel 3y ago> Name > As with all my recent projects, the name is because … This makes me whisper the name in my head
- Aardwolf 3y agoFirst of all, very neat! Text selection doesn't work. I guess it's rendered to canvas... but would there be any way to make this work?
- Beijinger 3y agoNice. But I would have preferred if he had worked on Uzbl https://en.wikipedia.org/wiki/Uzbl https://en.wikipedia.org/wiki/Uzbl
- jraph 3y agoI don't get it. Uzbl is a webkit-based browser. Can you expand on this? It's not like one of those browser engines that are promising but not quite there yet, like NetSurf, Servo or Ladybird.
- Beijinger 3y ago"The core component of Uzbl is written in C, but other languages are also used, most notably Python." Man, this thing was small and fast
- jraph 3y agoThis was by virtue of WebKit itself being (relatively) small and fast. I don't know what they call "the core component", it is quite misleading. I used the last version of Uzbl in an old Debian container to debug a game I made specifically supporting the iPad 2, which is quite resource constrained, because Uzbl was based on a similar version of WebKit. WebKit somehow had to fit the iPad 2 and still be quite fast, so Uzbl, which is very bare-bones, felt very fast indeed on a decent computer. I was looking at similar browsers, apparently epiphany (Gnome Web) is the only remaining open source browser based on WebkitGTK+ that's still maintained. Last version of Surf was released in 2021, Midori is actually a Gecko browser which I need to check out [1]. I guess someone could contribute and update Surf or Uzbl or fork the old Midori. [1] https://news.ycombinator.com/item?id=38047006 https://news.ycombinator.com/item?id=38047006
- Beijinger 3y agoNot sure why my original post was downvoted. By looking into it, I found this browser: qutebrowser is a keyboard-focused browser with a minimal GUI. It’s based on Python and Qt and free software, licensed under the GPL. It was inspired by other browsers/addons like dwb and Vimperator/Pentadactyl. https://qutebrowser.org/ https://qutebrowser.org/ It is fast!
- jameslk 3y agoThere’s something really beautiful about creating a browser that can run in a browser. We can finally steamroll a lot of those cross browser incompatibilities by replacing the host browser engine entirely. It’s like the nuclear option to fight against the new IE (Safari)
- IAmLiterallyAB 3y agoI dunno I'd say the new IE is Chrome. They basically control the ecosystem and everyone targets them when developing. "Best viewed with I̶n̶t̶e̶r̶n̶e̶t̶ ̶E̶x̶p̶l̶o̶r̶e̶r Chrome"
- leblancfg 3y agoI think GP meant "the minority browser we bend our logic for, in order to accommodate"
- jameslk 3y agoYes, that is what I meant. I have to work on a lot of e-commerce websites and the WebKit browser engine is the one that seems to always be late to the party or outright won’t support new features. But of course most shoppers on a website are on mobile Safari, especially the ones making purchases. And there’s nothing anyone can do about it because Apple won’t allow other types of browser engines on iOS.
- simondotau 3y agoIf you need “new features” not available in Safari in order to run an ecommerce website, I’m fairly confident that you’re doing it wrong. (Of course usually when one delves into exactly what features Safari is missing, specifically the ones which piss off web developers, it’s push notifications. And to that I salute Apple for bravely holding the line against that nonsense.)
- jameslk 3y ago
- deleted 3y ago[deleted]
- 3seashells 3y agoEvery Innovation, in its last dying motions becomes the world, the operating system, the compiler, the browser
- taddevries 3y ago"Who knows what lurks in the hearts of [browsers]? The Shadow knows."
- notorandit 3y agoWrong title. An almost complete web engine written in JavaScript.
- klysm 3y agoWe are sorely lacking inner browser virtualization. This way web pages can virtualize other web pages internally via canvas and get true micro-front ends! Every component can be fully isolated from every other component and they will communicate via network requests to each other
- maciekpaprocki 3y agowait. why not iframes?
- nine_k 3y agoYou can inspect iframes. To make the web entirely like a TV, everything should be rendered on canvases. To let you truly deploy your org chart, each team should be responsible for one isolated canvas.
- DaiPlusPlus 3y ago> To let you truly deploy your org chart, each team should be responsible for one isolated canvas. ...sounds like the Spotify desktop client. ...or Flutter-for-Web.
- sirk390 3y agoFor example you could set cookies before visiting another website. This is currently impossible in an iframe but possible in a browser. I've wanted to do this to automatically login users on some external websites.
- maciekpaprocki 3y agoThat's a security feature. If you would have that in any environment it would be massive security issue. If you actually own the service you can still do that.
- Hackbraten 3y agoWait until scammers start adopting that technique for their fake websites. Each widget will then be responsible for its own bounded con text.
- biugbkifcjk 3y agoShould add the browser for SerenityOS to the examples of new browser engines.
- canadahonk 3y agoIt's there - Ladybird (https://ladybird.dev https://ladybird.dev)
- biugbkifcjk 3y agoWhoops! I missed that somehow - thanks.
- EvanAnderson 3y agoThere's a product here that's been waiting to happen for awhile. I've been anticipating somebody cross-compiling another browser engine to WASM but this works, too. Deliver your site only to the "inner browser" (that the user has no control over because it's heavily obfuscated and tricked-out with anti-debugging code) and you eliminate all ad blockers. Throw some DNS-over-HTTPS w/ certificate pinning in for good measure and you kill DNS-based ad blockers too. Accessibility will be a challenge but if it sells that'll get "fixed". (I think this idea is evil, BTW, but somebody is going to do it.) Edit: As an aside this needs to go here, too. https://www.destroyallsoftware.com/talks/the-birth-and-death-of-javascript https://www.destroyallsoftware.com/talks/the-birth-and-death...
- GenerocUsername 3y agoThis sounds like Flutter
- streakfix 3y agoFlutter on web is horrible if you do it that way. There is a native renderer that renders to dom and is much faster.
- hughes 3y agoSounds a lot like Flash.
- DaiPlusPlus 3y agoexcept without the local-system security risks
- EvanAnderson 3y agoAnd no plug-in to download because everybody's browser has a highly-performant Javascript engine.
- 3y ago
- NetOpWibby 3y agoBrilliant. I love this so much.
- CodeCompost 3y agohttps://shadow.goose.icu/?http://acid3.acidtests.org/ https://shadow.goose.icu/?http://acid3.acidtests.org/
- orangepurple 3y agoAre we one step closer to using a VNC client to access services on the Internet?
- quelsolaar 3y agoWhen desktop applications running in electron, just doesnt have enough web abstraction to keep up with mores law, a hero comes along, to ensure there can always be one more level of java script between you and a responsive UI.
- Terr_ 3y agoSpeaking of Electron... when I start my Slack client for work, there are a series of processes where at least one reports 1.130 terabytes of virtual memory. (Shown in top as "VIRT".) Now, maybe that's just a potential usage that trust-me-bro it'll never actually try to use or access in RAM or on disk... but how on earth is that number for a chat client so much bigger than either Firefox with 100+ tabs or even Java-based IDEs like Webstorm?
- cangeroo 3y agoVirtual memory is allocated for isolation reasons. See v8 isolates.
- Terr_ 3y ago> v8 isolates Javascript engines aside, that sounds like a great sci-fi movie macguffin material.
- mananaysiempre 3y agoSounds like somebody is playing tricks with virtual addressing, yeah. See BIBOP (1980) [1] for an example, though it is not used literally in current garbage collectors as far as I am aware. Or look at what AddressSanitizer does with its nominal terabytes of “shadow memory”[2]. Chrome has a bewildering variety of low-level stuff in it, to save memory among other things[3], so it wouldn’t surprise me in the least to learn there was virtual-memory tagging somewhere in there, too. [1] https://foldoc.org/Big+bag+of+pages https://foldoc.org/Big+bag+of+pages [2] https://github.com/google/sanitizers/wiki/AddressSanitizerAlgorithm https://github.com/google/sanitizers/wiki/AddressSanitizerAl... [3] https://v8.dev/blog/oilpan-pointer-compression https://v8.dev/blog/oilpan-pointer-compression
- _ea1k 3y agoThere must be a term for this sort of situation. Something about coming full circle, but that full circle is inside of a dumpster fire. Also, I love this. This is fine.
- Tao3300 3y agoBrowser centipede ouroboros
- bobajeff 3y agoI think it's pretty cool. Maybe browsers are the kind of thing that should be written in s high level language like js. Except for the JavaScript engine of course.
- CitrusFruits 3y agoAlot of the UI in browsers is actually written in HTML/CSS/JS.
- streakfix 3y agoYes and that component of Firefox is called chrome. It was named before Google Chrome was created.
- deleted 3y ago[deleted]
- uoaei 3y agoOpening up not just a can but a whole writhing pit of worms with regard to security vulnerabilities.
- canadahonk 3y agoIt is technically memory safe :^)
- raytopia 3y agoCool project! Reminds me of Grail https://grail.sourceforge.net/ https://grail.sourceforge.net/ which was written entirely in Python.
- canadahonk 3y agoTIL, looks neat!
- Tao3300 3y ago> requires Python 1.5 or newer I think we all have newer versions than 1.5, so no problem... right? ;)
- tlarkworthy 3y agoMight be useful for VR
- O1111OOO 3y agoThe fonts look terrible in LibreWolf and the FPS is only ~60. LibreWolf is also extension heavy. My default zoom on a page is 120% on a 1080 screen. It doesn't load in (updated) Firefox, which is interesting. It only shows that the FPS is around 60. Not as many extension (vs LibreWolf). I rarely use FF (opting for LibreWolf). On Brave (no extensions at all, except built in protections), the site runs at ~121FPS and the fonts look normal enough (no zoom, page at 100%). Fonts continue to look fine even when I zoom to 150% or higher. I expected that my CPU temp would increase, maybe the fans might kick in... nothing. Cool as a cucumber. I have 4 browsers all opened on this page. Interesting project. I read what @EvanAnderson wrote (evil software). I tend to agree. Respectfully, I don't see how this would be used. Browsers that already run JS don't need this. Browser that need this usually don't run JS (fails on Dillo, NetSurf, Lynx for example).
- canadahonk 3y agoZoom isn't taken into account so probably why it looks bad. The FPS is locked to your monitor's frame rate (or what your browser provides, LibreWolf might always send 60 to avoid fingerprinting). As the post says, it's just for fun :)
- darklycan51 3y agoI thank everyone who uses chrome/chromium derivatives for such a great technology possibly being adopted by every browser as a standard. Goodbye World wide web, it was nice knowing you.
- robertlagrant 3y agoWas it only Chrome/derivative users who voted on the Canvas/webasm standards?
- gavinsyancey 3y agoI can't seem to get it to work. Just shows a white screen, sometimes with a black bar over the bottom half-ish of the screen. Tried in Firefox, Chrome, and Safari and see the same thing.
- ansraliant 3y ago[dead]
- mjfl 3y agoWhy do people love JavaScript and want everything written in it?
- test77777 3y agoMania
- evangow 3y agoMany people know javascript, so when they want to build something, they use the language they already know.
- standardUser 3y agoIt's relatively easy and omnipresent. Arguably the only indispensable programming language, at least for the foreseeable future.
- skydhash 3y ago> Arguably the only indispensable programming language. I'd put my money on C, almost everything is bootstrapped from it. Forth is a another candidate if you'd have to build everything yourself.
- postalrat 3y agoBecause it's a great language that many people use every day.
- Tao3300 3y agoJavaScript is one of the programming languages of all time.
- lopkeny12ko 3y ago/s?
- postalrat 3y ago
- syrusakbary 3y agoThis is an incredible feat. Also, love the attitude > But making a new browser engine is impossible! No. It. Isn’t! (Also I don’t really care how possible/feasible something is.)
- b800h 3y agoI'm sorry. Obligatory: "Yo dawg, I heard you like browsing, so we put a browser in your browser so you can browse while you browse"
- err4nt 3y agoAbsolutely love it, it's already perfect!
- username135 3y agoBuilt in JS, hard pass.
- issafram 3y agoIt's incredibly slow and that isn't surprising
- throwaway888abc 3y ago>So I started making a browser engine (for fun) a few days ago Lovely opening quote and by my own hobby project procrastinate high bar allow me to wonder when the "few days ago" exactly were ? Great project
- mattlondon 3y agoI also recently did something similar just for fun - my target was to render HTML 3 or perhaps 4. Aim: fun and perhaps learn something about how layout works. You can get surprisingly far quite quickly with JavaScript and <canvas> At least for mine, I got text wrapping and scrolling working :)
- peter_d_sherman 3y agoFirst of all, looks awesome! Second: I'd love to be able to see it access Wikipedia! (Wikipedia should be a fairly "low-hanging fruit" in terms of functionality that must be implemented to achieve compatibility -- if I were writing a web browser, I'd always start with Wikipedia compatibility first, then once that has been obtained, move on to more challenging, technologically complex sites... But that being said, Wikipedia is probably a bit more complex these days than when it was first implemented... still, it would be a great "win" to be able to browse Wikipedia with it!) Anyway, wishing you great luck with your browser!
- cxr 3y agoGood point. 1. Wikipedia changes so rarely that it's almost considered a short of a misfeature, so it's hardly a moving target the way that other stuff would be 2. Even despite the breadth of subject matter, most pages are fairly similar, and the more exotic stuff will be used infrequently via templates and confined to supplementary items like infoboxes 3. Your bang-for-buck once you have a passable implementation will be enormous (not to mention: doesn't outright contribute to the decay of society), in contrast to e.g. a social networking site where a quarter of the world uses it and 3/4 either revile it or are indifferent to it when stacked up against their preferred platform One thing to be considered is that the general look of unstyled pages that is common to almost all browsers isn't actually prescribed by any spec—browsers are free to come up with their own UA style sheets—so anyone developing a new browser should just make unstyled content look by default like what it would look like under reader mode. Pretty crazy that mainstream browsers haven't changed the way unstyled content is presented.
- gorenb 3y agoStroustroup's website uses this? What is this thing? Why
- DemocracyFTW2 3y agoPretty much the solution to better browsing that I've been thinking of for some time and of course never managed to even start about implementing it (or believing I could or should): have one browser / hidden level get all web pages complete with all the bad stuff (or at least the required cookies and advertising) left in, then give the user a sanitized view of that. Note you could do things like rendering obnoxious play-on-load videos as subdued stills that still allow the user to click on to view if they feel inclined; also should be possible to somehow cut the ads out of YT videos with some more work, and YT wouldn't know (the way it should be).
- yencabulator 3y ago> rendering backend (`<canvas>`) [...] you're using it right now! Yup, looks like canvas for sure, can't copy-paste anything and all the lines are clipped because it's not even conforming to my window size.