Either way, the web standards are too bad and bloated to make a good browser. All you can do is wait until everything died its slow death and is replaced by the glorious decentralized Lisp Web.
>>3 Enjoy your NSA. What are you going to do if the /prog/ server goes down indefinitely tomorrow? If it was decentralized, you'd do nothing because it would have barely any effect.
Name:
Anonymous2014-07-27 9:22
>>4 I would take a back-up Every decentralised model has failed and will continue to do so
Name:
Anonymous2014-07-27 9:25
>>5 And who would host it? Who would find it? What if the next administrator is lel-kunt?
Name:
Anonymous2014-07-27 11:28
>>3 Misspelling the "-ization" suffix is part of the cancer.
Now look at the links in the OP again... all these stupid "minimalist" browsers are just a different UI with the same existing bloated rendering engine.
Name:
Anonymous2014-07-29 23:50
>>11-kun speaks the truth luakit is better, but still a shit We need something new
>>11,12 What's so bloated about the rendering engine? Did you want a HTML engine that only supported HTML4 and CSS2?
Name:
Anonymous2014-07-30 4:08
HTML and CSS are bloated.
Name:
Anonymous2014-07-30 6:30
>>14 I want a rendering engine that doesn't reinvent scrollbars, for one thing.
Name:
Anonymous2014-07-30 8:07
Why do these idiots blabber about how a rendering engine is so terribly complex and monstrously huge? Why is rendering a web page any harder than rendering an app GUI? It's all just text and rectangles. OK, there also SVG and Flash, but there are plugins for that. Why can't anyone just take GTK or Qt and make a browser out of it?
Name:
/lounge/2014-07-30 8:51
>>17 The rendering engine needs to interpret every piece of element within the HTML page. It also has to keep track of every element within each web page. This means your rendering engine has to keep track of a lot of information as well as render that information. If you want an example of the complexity of rendering documents with many individual elements, try looking at the source code of Scribus and have a look at the data of a Scribus document.
They've also been reinventing the scrollbars too; it looks like WebKit uses the native drawing routine for scrollbars, but Chrome wants to reimplemnt that itself: http://my-chrome.ru/2014/01/about-scrollbars/ (from right to left: natively drawn scrollbar, Chrome-drawn half-broken scrollbar, Chrome-drawn slightly-less-broken scrollbar.)
>>17,18 They're complex because the monkeys who write them are doing it wrong. I've been (slowly) working on a CSS box renderer and the code is actually quite simple and straightforward once the algorithms have been figured out.
The big rendering engines are written by large teams with deadlines so there's necessarily the whole OOP bloat (all the ways to make software easier to write for large loose teams but creates ridiculously inefficient enterprisey designs: "separation of concerns", "information hiding", etc.) and less time spent thinking about the simplest way to do something, which also adds to the complexity.
On the other hand I'm working alone and not trying to make any deadlines, so I can spend as much time as I like thinking about how to design this thing and have it as monolithic as it needs to be. For example, the document is tree-structured so it seems to suggest a lot of algorithms are going to be recursive; I also thought at first this would be how the line layout (including wordwrap) should be done, but then realised just how much state would need to be passed around and that doing it recursively seemed far too complex.
If I was someone working as part of a team on a project with a deadline, I might've just accepted the complexity at this point, maybe even tried to hide it behind a design pattern (which just makes things worse overall!) or made several classes, and wrote the code. This is how most of the existing rendering engines (and the bulk of software) was written.
Instead I thought about it more and realised that recursion is not the best way to do it - the boxes do form a tree structure, but recursion isn't needed to traverse them and calculate linebreaks since that requires a more linear view of the data. I ended up with an extremely elegant and simple algorithm based on a few loops and pointer following. It can't be written without using goto either, so a more traditional programmer probably would've never figured it out. The implementation of the core traversal and linebreaking decision is only a few dozen machine instructions.
Rendering a document is overall a complex task, but if you can consider all that complexity in large pieces, and condense them into a simple algorithm, then the code does not need to be complex. In contrast with the traditional notion of breaking problems into simpler pieces and then combining them together to create a more complex whole, I'm taking complex pieces of the problem and combining them together to create a simple whole. It's somewhat like procedural generation in the demoscene.
>>21 Sorry, I forgot to deal with my thread redirection service.
Name:
Cudder !MhMRSATORI2014-07-31 12:00
>>19 That was me. Name field somehow disappeared...
>>20 Here's most of the interesting part (non-recursive CSS box tree traversal.) Linebreaking is just looping through the text, updating the break positions and width as you go, and splitting upwards when the line becomes too wide. There are some special cases like font-family: monospace and white-space: pre/nowrap/pre-wrap that probably don't need examining every single character. The upward-splitting code is also non-recursive, it's another big loop. Then the x/y is adjusted appropriately to the next line and the algorithm continues exactly where it left off - no "backtracking" or wasted work.
If I was someone working as part of a team on a project with a deadline, I might've just accepted the complexity at this point, maybe even tried to hide it behind a design pattern (which just makes things worse overall!) or made several classes, and wrote the code. This is how most of the existing rendering engines (and the bulk of software) was written.
While it's fantastic that you've found an elegant solution to parsing and rendering HTML pages, the rest of the world generally doesn't have the time to work as you do. This is why open source corporate projects (like any other corporate software project) take the worse is better approach to programming - "if it runs well enough then we can ship it". Maybe if you write a web log detailing your solution together with your analysis of the Gecko engine, you could send a notice to the Mozilla engineers who might pick up a few ideas to put into Gecko.
>>28 It's not open source quality, it's Apple quality. With closed source it would be the same except you wouldn't be able to see and appreciate the beauty of ENTERPRISE SOLUTIONS.
Name:
Anonymous2014-07-31 18:41
>>27 In a corporate environment, it's much easier to appear productive when you're furiously banging away at a keyboard and producing lots of code. The guy who just sits there thinking doesn't look like he's doing anything. That's why you get shit like classes containing a single variable and two trivial methods, because "I wrote ten classes today" sounds like you're getting a lot of things done while "I added a few variables and functions" doesn't. I don't work for Apple but a lot of other places love to use metrics like SLoC to measure productivity, which ends up encouraging this WTF-ery.
>>31 It's clear and descriptive of its purpose. There is no better way to clearly describe such a complex idea short of inventing a new word to describe it.
The guy who just sits there thinking doesn't look like he's doing anything. "I wrote ten classes today" sounds like you're getting a lot of things done
The volume of code output doesn't matter so much as progressing through the list of specifications in the world of business paid programming. A 50 line procedure that is functionally equivalent to a 200 line procedure doesn't matter to anybody but programmers. If the 200 line procedure was quicker to reason and write, that's what's getting shipped.
A thoughtful programmer who spends all day to remove 30 lines of code from the codebase (in order to make the logic cleaner) is less productive than a workhorse programmer who spends all day going through sections of the specification with masses of code - the brute force programmer is actually making progress and software stakeholders value this more than clean code. This doesn't mean that all progress is good progress. Progression without a reasonable amount care can lead to various software and development problems in the future.
The world of programmers for hire is a balancing act that leans towards people who achieves the most within the smallest amount of time.
If the 200 line procedure was quicker to reason and write, that's what's getting shipped.
Your arguments is fallacious, because larger codebase impedes maintainability in the long run. I.e. saving $1 today can easily cost you $10 tomorrow. It is like debt, with only difference is that you can borrow more to repay current debt.
A web browser could easily be implemented with just few lines of bash/awk/sed/curl. There's no way to justify the millions of lines of code that are in modern web browsers.
Name:
Anonymous2014-08-01 8:51
to justify is to be an ~idiot~
Name:
Anonymous2014-08-01 10:40
6 000 000 source lines of code
Name:
Cudder !MhMRSATORI2014-08-01 12:18
>>27 The amount of time I've spent on this algorithm in total probably does not exceed a day at most; I'm normally very busy with other things. I don't think "worse is better" applies here, since that usually leads to much simpler designs which don't handle particular edge-cases well (e.g. Unix), instead of grotesque complexity.
>>31,32 If you ever find yourself needing to describe such a complex idea, you should probably reconsider your approach. From a quick glance it appears to be for moving boxes up/down depending on vertical alignment, something which the code manages to make extremely bloated despite it being a very simple idea:
1. Collect the maximum height of all the boxes on one line, while laying them out; this will be the line height. 2.a Top-aligned boxes don't need to be moved. 2.b Centre-aligned boxes have (maxHeight - height)/2 added to their y-position 2.c Bottom-aligned boxes have maxHeight - height added to their y-position
The WK code expresses this too, but it's far more obfuscated and probably traverses the box list many more times than necessary - there's a function to do the first step mentioned above, but it traverses the whole box list. If layout has to traverse the box list already, why not compute the maximum height at the same time? The monkeys will spout things like "modularity" and "encapsulation", because they were so brain-damaged by their religious adherence to OOP dogma that they don't realise it's extra work both for them to write extra code, and the machine to execute it. They might also cry "premature optimisation", but this isn't any clever optimisation, it's common sense. To think otherwise is like driving to the store and back for each individual item you buy - absolutely retarded! Anyone sane wouldn't ever think of doing such a thing, yet put them in front of a computer, indoctrinate them with OOP religion, and this is what they'll do.
>>33 I don't see how using excessively verbose code with tons of needless indirection/abstraction and mind-numbingly-long variable names is in any way more productive. The same goes for reimplementing basic UI functionality and creating trivial classes - it's busy work, useless time-sinks to give the impression of being productive.
I always wonder why there are no more browsers using Firefox's rendering engine other than Firefox itself. There are a half-dozen webkit browsers. I don't like webkit. I wish there was something like luakit but with Firefox's rendering engine.
Name:
Anonymous2014-08-01 20:05
>>43 They stopped allowing other browsers using it or something, I guess they mixed the firefox and geeko code
In the past, Gecko had slower market share adoption due to the complexity of the Gecko code, which aimed to provide much more than just an HTML renderer for web browsers.[19][20][21] Mozilla's engineering efforts since then have addressed many of these historical weaknesses.[22]
The Gecko engine also provides a versatile XML-based user interface rendering framework called XUL that was used extensively in mail, newsgroup, and other programs. Another reason for much of the complexity in Gecko is the use of XPCOM, a cross-platform component model.[23] However, its use has been scaled back.[24]
If Webkit is supposed to be the simpler alternative, I don't even want to know waht Gecko code looks like...
I don't see how using excessively verbose code with tons of needless indirection/abstraction and mind-numbingly-long variable names is in any way more productive. The same goes for reimplementing basic UI functionality and creating trivial classes - it's busy work, useless time-sinks to give the impression of being productive.
I don't think you completely got my point. I'm saying the world of paid programming values productivity a lot more than they value optimal design. Programmers who produce verbose code that achieves the specifications within a shorter timeframe are valued higher than programmers who take longer to produce optimal code and design. I'm not judging the value of this being good or bad, I'm just saying that this happens.
The same goes for reimplementing basic UI functionality and creating trivial classes
I am not the designer of Chrome and I cannot give any rationale why they chose to work this way. I can only assume they had a good reason to specify this as a feature.
Programmers who produce verbose code that achieves the specifications within a shorter timeframe are valued higher than programmers who take longer to produce optimal code and design.
Code needs to be input, and verbose code takes more time to write - even when using an IDE that autocompletes 40-character-long variable names. Verbose code also comes from overly complex design, which leads to writing more code than is actually needed. The total time spent on design and implementation is likely more than an approach of creating the simplest design that works, and writing the minimal amount of code to accomplish that.
Put the complex quadratic-time text-wrapping algorithm of TeX into a browser? What the fuck!? I'm going to bet that 99.999% of browser users out there don't give a flying monkeyfuck about justified text. Just count up the number of spaces in each line, divide the width remaining by it, and add that to each one. Done. Fast and simple and good enough.
>>54 Firefox is a modern web browser, and that is a good idea. I don't know if it will be implemented but I think it will, eventually.
Name:
Anonymous2014-08-04 15:18
>>54 The person who filed that bug is not a developer and it's evident from the comments that the developers themselves don't badly want to implement it. Granted the Mozilla developers did seem to think that implementing a pixel accurate PDF engine using HTML5 canvas was a good idea...
>>56 I bloody well hope not! How much energy (human and machine) needsd to be wasted on figuring out [i]where to split a line of text[/i}!?!?
In fact I am used to systems that do not even tr y to split at whitespace. If the available width is x columns wide, they would just split the li ne at that position, no exceptions. Easy and com pact and really not so hard to read if you're us ed to it, but I don't think the majority will li ke this, so for my browser I will compromise on an algorithm that doesn't split words, but is no t any more complicated than that.
When people read webpages, their primary goal is to consume the content, the information (no matter how vapid it may be.) The majority of them are not there to gawk at the linebreaking or font rendering, so any added complexity there for small improvements will be imperceptible and wasted for almost everyone. Don't even get me started on the idiocy of "smart" quotes, ligatures, and all that other extraneous shit.
>>11-14 Walk the thread, we've discussed netsurf, links2, jumanji, dillo, etc.. Cudder might enjoy Dillo.
If you still don't get it, stop using, supporting, and advertizing the larger market shares of web browsers.
>>36 So you are saying we should use Elinks, or adapting it with the cURL library? You still need to render colour. Unless you are seeking doing it VT100 max colours.
>>19 Shit, my old post are there. It's been 2 years. It feels so long.
Name:
Anonymous2014-08-05 15:30
Cudder, We need to open a gitlab to share code. I've been wanting to do this all my life:
This is also going to be the web browser that puts YOU in control. Per-site/per-domain/per-path settings for security and privacy; a UI that doesn't treat users like idiots by hiding everything;
Do we use that tor-fossil repo we have here somewhere?
Name:
od says2014-08-05 17:00
the web has faaar grown out of control
really, how open is a protocol if you need a team of hundred programmers to implement it?
what is needed is a reset, a reboot to a more simple protocol. of course this will never happen but lets entertain the idea nonetheless.
a protocol that cannot be implemented by a programmer in his spare time over a week is not open, OKAY?
so let's go back and think about why all this shit has to be so complex, aside from encryption, does it really need to be? do we even need HTML anymore? haven't we LOOONG crossed the point at which it would be economical to just send images over the wire?
This is everything that's wrong with programmers today. They see something they find just a little difficult, and build an insanely complex system to replace it with an even more arcane set of rules and behaviour.
Stopped reading this shit. The author should go stick a broomstick up his anus.
Name:
Anonymous2014-08-06 5:51
>>67-70 The big problem I see with TermKit is the lack of a unifying concept for its interfaces. Unix terminal applications aren't powerful despite the shitty unstructured nature of byte streams; they're powerful because byte streams are easily mungeable. Layering HTTP and JSON over that just adds new complexity for applications to deal with (News flash! Not every application is a web app!)
People in the 70s and 80s also tried to make everything fit their preferred structured data paradigm (at the time I believe it was mostly records) and they failed then, too. Serialization formats come and go but the pipe marches on.
Name:
Cudder !MhMRSATORI2014-08-06 10:42
>>63 At this point it would probably be better to share ideas only.
they're powerful because byte streams are easily mungeable
They expose the full power of letting the application interpret data as it wants to. The complexity and annoying failure modes of trying to enforce a type on the data make it a stupid thing to do - remember resource forks on old MacOS and the typed (text, binary, record, etc.) files used in old mainframe systems? Not surprisingly, they disappeared.
>>67 termkit seems like just more shit piled upon shit. really the opposite of the way to go imo.
>>72 simplicity? about how "open" the web is and from the looks of it, a few years from now everything will be unspiderable SPA's which only works in the last version of the big 3 "evergreen" browsers. And you'll only be able to ever find anything using one of two different search engines. they got us by the balls mate. you need big teams, big infrastructure, to even get started.
Name:
Anonymous2014-08-06 23:43
>>75 As far as I am able to tell this is the goal of the big three browser implementors. Not versioning standards like HTML5 can only make sense if you don't plan on anyone else ever implementing your "standard".
>>78 Basically, if you know CLOS, it's a half-arsed implementation of CLOS. RDF's are bookmark objects that can be printed and shared among lisp images.
At this point it would probably be better to share ideas only.
Why, you are publishing it soon? I really want to do the domain controls, cookie and temp file requests, esp. certs handling.
Unless you have that done already. CSS, I rather do something else, like Xlib instead, even Cairo.
IMHO, I want to ignore HTML5, ans just go with WHATWG.
Name:
Cudder !MhMRSATORI2014-08-08 12:50
>>75,76 That's why we need a new browser, one that isn't controlled by some large organisation, one which is compatible enough to view most information-oriented sites, maybe even some app-sites like YouTube or Fecesbook. Then figure out how to market it so that it appeals to the masses, making it spread widely. Encourage forks and customisations (it should be public-domain), so we might have several dozen different versions all based around the same core, but with subtly different UIs, extra features, etc.
This will be what can start the revolution - when the "web developers" realise that almost everyone's browser is slightly different, and that everyone likes their version because of their differences and is unwilling to change, hopefully this will make them more focused on content instead of styling, reduce unnecessary use of features for the sake of using them, and lead to a more accessible Internet for all.
Chrome gained marketshare because it was faster, easier to use in some ways, and still displayed existing pages well. What will be the "killer feature(s)" of The Next Browser? Being smaller and faster, completely pubic-domain and open-source, and easy-to-use but also powerful UI is what I'm thinking of.
The issue of search engine replacement is a whole different can of worms, let's not open that one here. Create another thread for it if you want.
>>80 Quite the opposite, actually; this is more like a thinking exercise with some coding involved, than the other way around - as discussed above, it's more important that you think and plan the design before writing any code. Since I'm targeting Windows, you might be more interested in thinking about writing efficient UIs on Linux with a minimum of dependencies - Xlib/Xt/Xaw does look like a good path to take.
Name:
Anonymous2014-08-08 13:06
Ha, remember when firefox was the lean fast browser? You know, back at version 1.
>>81 I don't see how a simpler implementation can succeed on its own merits today. People will not switch to a new browser unless it is bug-for-bug compatible with their previous one. Gecko only succeeded because people began to move away from ActiveX. WebKit only succeeded because because Mozilla did not subsequently introduce many (any?) extensions of their own that saw wide adoption. I'd wager that WebKit/KHTML was fairly simple as well in the early days...
Bloat is the price of victory. This observation is applicable to other software as well.
Name:
Anonymous2014-08-09 0:23
>>88 Software for quality users instead of for the inferior low intelligence masses. Or just create software for you by you.
Name:
Anonymous2014-08-09 8:58
What will be the "killer feature(s)" of The Next Browser? Being smaller and faster, completely pubic-domain and open-source, and easy-to-use but also powerful UI is what I'm thinking of.
The next browser? mate by the looks of it you can just start thinking about the next protocol. Not even the nuttiest nut is going to be able to go without a client that renders his bank apps and does Flash. If we're to get in there it has to be from the side.
We need something in between IRC (decentralized, data oriented, native UI, "instant") and the Web (application oriented). With a strong focus on privacy and security. We can build this platform on top of HTTP for all I care but HTML5 has gots to go.
Name:
Anonymous2014-08-09 9:38
>>90 The protocol doesn't need to be built on top of HTTP. Just about everything can be sent over HTTP, so the final result can be layered on top of whatever you like.
What do you mean with native UI? No matter how you sensibly define it, IRC and the Web either both have it or both don't.
Also, the Web is not application oriented. Actually, the fact that it was never meant for this EPIC WEB APP shit is pretty much the biggest source of problems right now. It's questionable whether applications like that are actually desireable, anyway. With proper authentication and communication, most vital ones could be reduced to simple requests.
That's not really the best choice for the DOM tree, as simple as it may look - arbitrary position inserts and deletes, and thus "find next sibling"/"find previous sibling", are going to be far more common than indexing operations.
The article about parsing is just one big facepalm. At least use a state machine for the tokeniser... I see now, this is written in an id10t-proofed language that's missing goto so they have to bend over backwards to do anything truly simple and efficient with it. In the old thread I mentioned I had a full HTML5 parser written in C in a 24KB binary, consisting of 12KB tokeniser and 12KB tree construction. I've rewritten the tokeniser in Asm since then, and it's now... less than one kilobyte!!! At ~70 states, with around a dozen bytes per state on average, maybe that's not so surprising after all.
Tree construction is a bit trickier since the full number of possibilities is basically {text, n types of tags open/close, comment, doctype, EOF} * 23 "insertion modes", but many of these cases are identical so there's a lot of redundancy (e.g. DOCTYPE tokens are basically ignored in everything but the initial IM - considering that 16 tokeniser states are needed just to parse these, it's rather wasteful.) At the moment my tree construction is 66 functions in ~2K lines of C with the bulk of the code being switch()s; when I have the time I should try to shrink that too. Encoding the state data in arrays instead of directly in code might help...
I haven't written any CSS parsing code yet so I'll not make any estimates nor comments on that third article.
>>107 Yes, removal of features from one place and insertion of them in another place where they make more sense. The tokeniser doesn't need to parse the fields within a DOCTYPE, it just needs to figure out where the end of the tag is, which is really easy (but you wouldn't know just by reading the spec) - scan to the next '>'. The fields within it can be parsed at some later point, perhaps even in a different thread. The DOCTYPE is only used for an edge-case quirks-mode parsing decision but the way that's detected in the spec is ridiculously bloated (see http://www.w3.org/TR/html5/syntax.html#the-initial-insertion-mode; all those string constants are bigger than the whole tokeniser I have), so I'll probably end up just defaulting to quirks-mode off and letting the user push a button to toggle it if she feels the page doesn't look right...
Character references (<   etc.) are another thing the spec tries to put into the tokeniser, but once again it's not necssary to parse them at this point to determine the boundaries between various pieces. Charref conversion can be done when strings get copied out of the input buffer and into the DOM.
>>108 2/3rds Rust and almost 1/3... Python!? The code I glanced at there doesn't look much simpler. Browsers are bloated because the whole thing is bloated. The HTML parser there contains a tokeniser...
...which is a pretty horrific 3kline+ piece of code, much of it duplicated, considering it came from one of the more "lightweight" browsers - NetSurf. On the other hand, Dillo's HTML parser (entire parser, tokeniser is integrated, around 4.1klines) is quite a bit nicer, although I don't know how HTML5-compliant it is:
The fear of being identified as gay can be considered as a form of social homophobia. Theorists including Calvin Thomas and Judith Butler have suggested that homophobia can be rooted in an individual's fear of being identified as gay. Homophobia in men is correlated with insecurity about masculinity.[64][65] For this reason, homophobia is allegedly rampant in sports, and in the subculture of its supporters that is considered stereotypically male, such as association football and rugby.[66]
>>113 I don't hate him Cudder is not gay tho, he is just a girl, thus making you transphobe thus showing that you are a tranny
Name:
Cudder !MhMRSATORI2014-08-31 11:59
HTML5 tokeniser + parser + DOM allocation + nice treeview GUI (looks like FF's DOM Inspector) in under 32KB! Only tokeniser is in Asm, rest is in unoptimised stupidly simple C.
Add CSS parser, box renderer, full network support, and it's still probably going to be under 256KB. Assuming the target is 1MB that still leaves 768KB for a JS interpreter, w00t w00t!!
>>117 That's impressive, Cudder-sama. But all that effort could go to defining a new web document standard instead. I don't see why anyone like you would write a browser based on the absolute shit ``technologies'' we have right now. You are much better than this.
You know nobody will use your lightweight browser, but you might get some attention if you propose a sane alternative to HTML, CSS and Javashit.
Name:
Cudder !MhMRSATORI2014-09-01 5:15
>>119 You're doing the equivalent of asking a C64 democoder why she chooses to continue working on a highly constrained 32-year-old platform. I'm more interested in redefining attitudes towards software complexity and engineering than reinventing the Internet, by taking a relatively complex standard and making a simple implementation of it.
HTML/CSS/JS is complex but my main argument is that complexity is far less than what contemporary implementations lead one to believe. Or perhaps that complexity is just from attempting to handle edge-cases that are not at all important in reality; that's why I'm trying to write a standards-compliant (or nearly so) browser, to prove what can be done.
Or if you want to be cynical, this is my "embrace, extend, and extinguish" strategy.
This thread most likely to be voted Thread Of The Year (TOTY).
Name:
Cudder !MhMRSATORI2014-09-01 11:45
Benchmarked the parser against Chrome and... it's ~50% faster. I wasn't even optimising for speed, only size (it is at least an order of magnitude smaller than WebKit's.) If I wanted to, I could probably embiggen it slightly and make it a lot faster, but I won't do that. Takes <16ms to parse this page...
You're doing the equivalent of asking a C64 democoder why she chooses to continue working on a highly constrained 32-year-old platform
Because it's fun and just a harmless e-penis contest? We're not in the need of more demos, though we do need better standards for the web. Stop wasting your time.
I appreciate your proof-of-concept browser but you're encouraging the web apping crowd to live on.
Making DOM nodes and adding them to the tree is the slooooooooow part. That's the code which is currently in C.
That text-only result is interesting... when the input is 100% text with all the tags stripped out, looks like a strcat/strlen is the problem. That was dumb and stupid string handling.
More than two orders of magnitude difference between strcatting and using stored lengths. The size increase of storing a length is tiny and the benefit is huge. The lesson here is: for performance, never use strcat(), always store lengths, and only strlen() once.
Name:
Anonymous2014-09-03 13:15
>>133 Is there any real programmer who uses strcat on real programs? There is no reason not to use strcpy (str + n, str2);
>>135 If you can't do the absolutely trivial arithmetic needed for determining the right lengths ("maths is hard!") you should not be doing any programming at all.
>>140 For my use the best option is probably null-delimited with prefix-length, i.e.
For my use the best option is probably null-delimited with prefix-length
Aha, so it's the same as the last option but a little more unreadable
Name:
Cudder !MhMRSATORI2014-09-06 10:52
After some more benchmarking, I've determined that just inserting nodes into the Win32 TreeView is taking up quite a significant portion of the time... with the same ~1MB file as before:
59% of the time is spent in UI code, meaning the actual parser/DOM node creation is now over 4x faster than that of Chrome.
>>145 That's the whole point... lengths are stored so there shouldn't ever be a need to count, except when e.g. parsing things.
Further extension of the length-delimited string idea: at -4 from the pointer is the strlen, and at -8 is stored the allocated size, meaning I now get resizeable buffers (RBS) that are also downward-read-compatible with APIs expecting LDS and NTS. It's like an OOP class hierarchy, except without the bloat: RBS > LDS > NTS
>>146 Only if you're illiterate. The code actually looks far nicer in Asm than in C, because there's no type system that gets in the way; a ldstrlen() becomes a simple mov eax, [eax-4]. An rbldstrcat() looks like this:
Very similar to Delphi strings - too bad Delphi's compiler is terminally retarded (http://dis.4chan.org/read/prog/1318534478 )... MFC has CString which is similar, but they also put the fields in the wrong order so that LDS aren't compatible with them.
>>152,155 Anything ASCII-compatible such as ISO8859-x/Windows-125x, UTF-8, GB18030, Big5, Shift-JIS will Just Work™, the only non-ASCII-compatible encoding supported is UTF-16 which gets internally converted into UTF-8 (at the expense of another copying operation). Hence http://progrider.org/prog/read/1409320992 .
It also underestimated just how much of the Unix world is built upon the standard in/standard out paradigm (which it rejected), which is kind of ridiculous in an asynchronous, networked world. With deeper research, it was revealed how Unix magic like nested remote subshells and remote privilege escalation works only by accident, because the programs in between are too dumb to mess it up, not because of anything deliberate.
I'm not sure if he actually learned the lesson that "too dumb to mess up" is a good way to design things.
They're the same people who reduce Apple products to the specs on the side of the box, and never bothered to notice that the reason MacBooks dominate geek conferences is because they have features that actually make life easier, like say, reconnecting to wifi in under a second when resuming from sleep.
Or maybe they're just clueless pseudoprogramming "web designer" hipsters worshipping the Apple cult?
>>164 Or maybe they're people who are more interesting in getting shit done than wanking off to an extra tenth of a percentage boost from tweaking their CFLAGS for the twentieth time.
>>167 An annoying percentage of Windows software is released as debug builds. VS compiles debug executables with slightly different parameters, leading to differences in the execution of release builds. If the programmers weren't shit, that would not be an issue and they would never expose the undefined behavior that would cause such differences to show, but alas, they are shit. And when release builds fail they instead just ship the debug builds.
Name:
Cudder !MhMRSATORI2014-09-14 13:51
>>169 The idea of ever having a separate "debug build" is stupid, precisely for that reason. (This is different from a debug-version which may contain extra logging etc.)
>>161,164 When the first paragraph already contains crap like "best development practices had not been established" you know you're reading the thoughts of a poser or - at best - a mindless sheeple (sheepson?) who wants to "innovate" in the worst possible way. It's like he's lamenting the lack of a religion, because he wants to follow one.
Today, this means you still have to abort SSH sessions by typing magic sequences (return, tilde, period) rather than using out of band signalling
That just means your SSH software is bad (and you should feel bad about it...?)
catting binary files into your terminal can mess it up permanently
Have done this many, many times, and never had to buy a new terminal, so "permanently" is gross exaggeration. (I bet he doesn't even know there's a "reset" command...!)
melding modern interaction design with the technological underpinnings that can support them
What the bloody hell is this even supposed to mean? "Turn everything into a web app"?
the reason MacBooks dominate geek conferences is because they have features that actually make life easier, like say, reconnecting to wifi in under a second when resuming from sleep
Go to a real "geek conference" (i.e. a demoparty) and you won't see many Macs at all. Maybe a few Apple IIs. Even the C64s and ZXs are going to outnumber them. And "make life easier"? Maybe it's easier if all you do is obey what Apple wants you to do... like buying a whole new machine whenever a new one comes out or when something that should be trivially replaceable like a battery wears out because it's "more convenient" and you don't know how to use something as simple as a screwdriver... "We know better than you. Trust our word for it and keep buying our products, consuming, and making more bloated software so we can sell you more of our products!" What a load of bullshit.
Combine that with the first paragraph above, and "hipsters worshipping the Apple cult" sounds about right!
Name:
Anonymous2014-09-14 14:22
I just don't know anymore... Shit going down on Syria, World's economy still stagnant, the kikes yet live, and in my retreat to my only place of confort I can't even find solace online. Firefox is going down hill, half of the websites I visit give me some Apache Mod error, other websites like Motherless reject my user agent, there are no decent browser alternatives. I just want to browse the web, I just want to be able to use links2 in Windows as well and not be tied down by retarded design majors and their inconsistent shit online.
>>169,170 I don't understand why anyone would ever want to have separate debug builds for a general purpose program. Just strip symbols from end users' packages and make diagnostic features dynamically selectable and you eliminate the whole set of bugs that arise from differing build configurations.
Name:
Anonymous2014-09-15 3:42
>>174 Or just avoid undefined behavior that differs.
Name:
Anonymous2014-09-15 7:35
>>175 Even with good coding practices, mistakes will slip through from time to time. It's easy to say, "Don't shoot yourself in the foot" but it's better to just not point the gun there in the first place. You're always going to have to try to reproduce issues that appear in a production build on a debug build anyway, if the two are distinct - if they're not, it's just one less thing you need to worry about.
>>176 If you can't deal with the minute differences between debug and release builds, then your shitty code is broken. And you've locked it into a single compiler, because it is too fragile to switch to another.
Crashes are good. It is the computer's way to warn you that the programmer was an idiot.
Name:
Anonymous2014-09-15 13:48
>>180 You're missing the part where not having multiple build types... means not having to deal with multiple build types. If all your builds have diagnostic features that can be enabled if necessary, you never have to tell users that are seeing a bug you can't reproduce to please install a debug build just to get some logs. If all builds have logging you just tell them to enable it and get on with solving the real problem.
Diverse compilation is good, but a good static analyzer is a better tool for catching the sorts of bugs an optimizer is likely to break. If you just build with a bunch of different compilers, you have no way to reliably ensure that at least one compiler will be aggressive enough to break the code that's bad.
Name:
Anonymous2014-09-17 21:40
other websites like Motherless reject my user agent
Random idea time... configurable relayout/repaint intervals.
Those pages full of blingy animated shit are horrible for power consumption because the browser is forced to constantly relayout/repaint stuff. There's even whole JS libraries to batch DOM updates to avoid this for the stupid apps that can't do it right themselves...
How about the browser itself throttling things - you don't need to compute and repaint as fast as the scripts are trying to make the browser do, and since up to ~100ms is not so noticeable, by default script-driven repaint intervals could be limited to one every 100ms. Those wanking "web designers" aren't going to like this since it makes animations look jerky, but who gives a shit... that's why this should be configurable - if you really, really want to play some inane JS game or something else that needs ultra-fast repaints, then you can turn it up (and see that your power consumption goes up, and battery life goes down as a result.)
Ditto for "smooth scrolling" (one of the worst ideas ever conceived) - unless I'm grabbing a scrollbar and dragging it, I'm not scrolling one pixel at a time, so why the fuck do they think I want to see the window repainted every time it scrolls 1 goddamn pixel!? If I'm scrolling by 10 pixels then just move the existing content by 10 pixels and repaint that 10-pixel gap. What a ridiculous waste of (GPU mostly) power.
(I could rant on and on about the idiotic trend of making UI elements behave like physical objects - with the exception of "inertial scrolling" which is genuinely useful on a touchscreen but only without that annoying "bounce-back" or "friction" - but that's not so browser-related....)
configurable relayout/repaint intervals. Ditto for "smooth scrolling" (one of the worst ideas ever conceived)
I love you so much, Cudder-sama. You always bring logic to our irrational world.
I've used a trackball with inertial scrolling and I think it's an amazing mechanic that should be implemented in normal mouse wheels as well, but at the moment it's not very configurable and I don't like the sharp acceleration curve. Can this be done with software alone?
Name:
Anonymous2014-10-01 15:52
No Material Design for Cudder, so are you going to use iOS or Windows for mobile?
>>185 Something like this already happens for inactive tabs. Sorry to burst your bubble.
Name:
Anonymous2014-10-02 1:39
>>188 Where can I tweak this parameter? Please expand on this, I'm interested.
Name:
Anonymous2014-10-02 5:40
>>185 Why is it called smooth scrolling when it makes the scrolling laggy and jerky?
>>186 You might like greasymouse, available in the contrib directory of x.org's ftp server.
Name:
Cudder !MhMRSATORI2014-10-02 10:57
>>186 The whole idea of inertial scrolling is that you sense when the user takes the finger off the screen/touchpad and then continue scrolling at the same velocity; how do you propose that be done with a mouse wheel?
>>187 Android, but I'd rather not use a mobile device if I don't need to.
>>188 Inactive tabs (or minimised windows for that matter) shouldn't need any repainting.
>>190 It's "smooth" if you have enough GPU/CPU power to waste moving the existing contents and drawing each new line of pixels separately, but it still feels laggy because you're forced to scroll only as fast as the machine can keep up. There's no snappy ultra-responsive multi-pixel jumps when you scroll (which the "UX designers" seem to abhor...)
Name:
Anonymous2014-10-02 11:20
>>191 You can ``flick'' a mouse wheel same as a touchscreen.
Name:
Anonymous2014-10-02 12:54
>>192 Some mice have smooth wheels and it might make sense for them. Most use clicky wheels and it makes no sense because X clicks should result in 5X (or whatever the constant is for your setup) lines scrolled.
Name:
why my anus is bloated2014-10-02 14:17
your cock is in it
Name:
Anonymous2014-10-02 16:57
>>193 It depends on how fast your X number of clicks are input.
visit the page open javascript console var img = document.createElement("img"); img.src = "http://i59.tinypic.com/uliti.png"; document.body.appendChild(img);
>>192,193 Flicking the mouse wheel just causes a series of scroll events that are indistinguishable from scrolling in a short burst. The smooth wheels generate scroll events the same way. Inertial scrolling requires detecting when the user has taken the finger away from the device so it can continue to scroll, and stop scrolling once the finger touches down again.
>>203 A setting buried in the horribly obscure about:config interface that only takes effect for background tabs, globally, is not quite the same thing as an easily accessible (probably via some menu item) control to modulate the current tab/window's background AND foreground update frequency.
So the question remains, is there a unique DOM event that would fire solely for this throttling, to warn the web app of the slowdown?
Amusing to see the "BUT MUH ANIMATIONS!!!" developers are complaining as usual...
On the subject of Firefox settings accessibility, it would be great if they added the possibility of adding any about:config item as a menu item, like Opera's Quick Preferences but far more flexible.
>>203,204 If this project ever gets that far I'll definitely be writing one. A browser that doesn't handle at least most of HTML5 and JS won't be so interesting even if it's much less bloated, because most people will just see it as something like a theoretical exercise. A browser that can work with most websites out there now, including the JS-heavy stuff, on par with other major browsers like FF and Chrome, but also much smaller and more flexible, will get noticed. I've mentioned this before in >>120, this is not about finding better protocols and web standards but about better implementations of them.
Name:
Anonymous2014-10-19 8:35
Is there real work being done on a non-bloated browser engine? (and that's feature complete)
Name:
Cudder !MhMRSATORI2014-10-20 6:41
>>210 real slow work. IRL is taking up too much time.
Name:
Anonymous2014-10-20 13:16
>>211 Would you mind sharing your work? Even Nikita has a github.
Name:
Anonymous2014-10-20 14:35
>>212 Github is the last bastion of bourgeois hipster chauvinist pseudo-intellectuals in cyberspace. If we could only nuke the site from orbit and take its inhabitants with it, the shackles of the Von Neumann era would disintegrate and we could finally move on with real, serious, honest-to-god programming.
>>216 Have you given any thought on how to implement CSS3 yet, Cudder?
At times I've entertained the thought of writing a fully-featured web browser for Plan 9, and what always stops me in my tracks is the CSS3 insanity. I can't conceive of how one could write a box layout engine that supports all those transformation/transition/gradient/box shadow effects without the code coming out looking more like a poor man's Macromedia Flash.
The animation stuff (http://www.w3.org/TR/css3-animations/ ) is conceptually easy as all it's doing is modifying properties periodically (and forcing a relayout/redraw), but it's still quite superfluous to the goals of this browser: display the useful content, minimise the eyecandy and extra fluff.
Transformations are also conceptually simple, but implementation is going to involve a lot of extra bitmaps to be rendered to and plenty of pixel-shoving, which would probably be better done on a GPU... again, not a really useful/important thing to have for just displaying documents.
code coming out looking more like a poor man's Macromedia Flash.
I'd rather write a low-bloat Flash-compatible plugin instead (and I actually have a piece of one written already, for a demo over a decade ago); SWF is a great format that Adobe really fucked up when they bought Macromedia.
The HTML parser is 120.5KB, of which the tokeniser is over 40KB(!) and the tree construction is nearly 30KB. For some reason, there is an "HTMLToken.h" which is itself 2.8KB. The one I currently have is ~1KB tokeniser and 12KB tree construction.
Name:
Anonymous2014-11-01 14:27
let's make a new web browser in 4kb
Name:
Anonymous2014-11-01 16:18
>>219 Can you make a browser engine without all the CSS3 and HTML5 shit? Just something that can render text and pictures, place them on screen readably, and allows the user to control stuff like turning Javascript on/off and configuring proxies? No fucking gradients, graphic effects in CSS, videos, etc. Can you do that?
>>225 Not needed in a web browser. Download it and open in an actual PDF reader. Reading PDF in browsers sucks ass anyway, as it tries to download only a part of the pages and when you want to skip a lot of pages it makes you wait for them to download.
>>228 They just won't look the way the author intended, which is perfectly fine (a big NO THANK YOU to those idiots who think grey-on-black text is anything but completely unreadable...)
Name:
Anonymous2014-11-05 18:17
Cudder, why don't make your browser open-source so others can help with development, criticize, propose ideas, test for bugs, etc.?
>>230 It will be (public domain, in fact); there's just not much of any "source" at the moment besides a parser and a crude DOM viewer.
I'm also too busy at the moment so feel free to contribute... a tiny CSS parser and associated datastructures for keeping track of CSS rules would be the next step. Aim for CSS2.1 although there's a useful parsing spec for CSS3 which you can use.
>>235 How the fuck is anyone supposed to contribute if they don't have the source to your code? Even if they did an independent CSS parser, there would be a huge impedance mismatch when you try to combine them later. You'd probably end up rewriting the whole thing anyway.
Stop being autistic and put a tarball up somewhere. You geezers never finish anything because you insist on perfecting it before you show anyone.
Name:
Anonymous2014-11-09 18:34
>>237 We should figure out a way to share code with each other without making it completely public (until an autist leaks it).
Name:
Anonymous2014-11-11 19:16
>>238 Setup some git repository and post the address here.
>>247 Actually, dependent types help reduce bloat. For instance, runtime array bounds checks become obsolete, which can lead to 10-20% of performance improvement.
>>255 There is a reason you are being asked about your definition. DDG can't show what you believe.
Name:
Anonymous2014-11-16 7:27
>>257 Define a container that can hold several types of elements. Define a fold function that works on several types of containers. Can C do that without C "macros"?
DIS AINT UR FUCKIN TAXI SERVICE YA FLASHY PANTS RETOID, DIS IS PROGRAMMIN. IF U CANT HANDLE IT, GO RUN CRYIN 2 MOMMY
This implies that the container is indexable and, what's worse, contigious. How are you going to fold/map a tree then? C is useless.
ARRAYS R DA DATATYPE OF C. IF UR EVEN THINKIN ABOUT DOING UR FLASHY GOOTCHY FUNCTIONAL PROGRAMMIN SHIT WITH UR CUTE TREES N BUSHES U SHUD STAY DA FUCK AWAY FROM C N GO BAK TO BITCHING WITH DA OTHER LADIES ON ##programming ABOUT WICH LANGUAGE IS DA MOST /fa/
N STOP ASKIN TEENAGE GIRLS 2 DO DISGUSTIN SHIT, YA FUCKIN POOP SCOOPING RETOID. ALL DEY WANT IS A RIDE HOME, NOT TO FULFILL UR DISGUSTING KAWAII SAFARI HENTAI FETISHES.
Name:
L. A. Calculus!jYCj6s4P.g2014-11-16 10:11
O YEA, N GET DA FUK OUTTA MY THRED
Name:
Anonymous2014-11-16 10:19
>>262 You can easily modify it to work with any data structure.
Name:
Anonymous2014-11-16 10:59
>>263 Actually, even C++ has std::accumulate which is a generic fold. And C++ is hardcore, painful Sado-Masochistic programming just like you love. So C is a useless archaism even among the imperative posse. You should retire and watch Santa Barbara, gramps, not read the internet.
>>262 Pass another function pointer as argument that each time it is called it will show the next element to be folded.
Name:
Anonymous2014-11-16 22:16
>>272 It's also a separate function in C++. They just look the same when you call it.
Name:
Cudder !MhMRSATORI2014-11-17 12:49
>>258-277 Traversing an array and calling a function on each element is something like ~5 bytes for the main loop: array_fold_loop: lodsd call ebx loop array_fold_loop
Calling a function is already 5 bytes, and then you still have to setup the parameters for it, so it's smaller and faster to just write the loop directly.
Traversing a binary tree (pre-order, nodes stored as [data, left, right]) is a bit less than 32 bytes, so it does make some sense to have this be a separate function if you're going to use it more than once: tree_fold: lodsd call ebx lodsd test eax, eax jz no_left push esi mov esi, eax call tree_fold pop esi no_left: lodsd test eax, eax jnz has_right ret has_right: mov esi, eax jmp tree_fold
>>272 I want to say fold(container) and have it work, no matter what type "container" is or the type of its elements is. That's fucking generics, if you didn't know: being able to define generic functions, functions that work on general stuff, not just on specific types.
>>277 If the call is the same, then that's one generic function with lots of instances. It's the same in Common Lisp, Haskell and any decent language. But if you have to waste your time on shit like fold_rbtree_double (as in C), then that's not generic, it's useless.
Programmers don't give a shit about "bytes", "bits", "cycles" or any of that sewer infrastructure that has the honor of running programs. Because wasting time on floor-scrubbery means having less time to actually write useful programs.
Name:
Anonymous2014-11-17 19:45
I think some of your design goals are at odds with each other, Cudder. GDI is ancient shit and it's only going to make your browser harder to port. A D3D or OpenGL renderer would draw significantly faster and allow you to easily render most of the page at once, significantly improving scroll performance (just a blit).
Leaning too heavily on Windows features in general is going to kill any chance of this making waves in the web "developer" community. They're all on OSX and Linux these days.
Programmers don't give a shit about "bytes", "bits", "cycles" or any of that sewer infrastructure that has the honor of running programs.
Those are not true programmers, they're the head-in-the-sky academics who are so far from knowing what reality is that all they can do is come up with more resource-wasting "solutions" to non-problems.
Because wasting time on floor-scrubbery means having less time to actually write useful programs.
Say that when you figure out how much time you're wasting just waiting for your ultra-bloated system to do the stuff you want to do... now multiply that by everyone else using the same softare... because the id10ts who wrote the software you use followed the same entitled "my time is so precious I'd rather waste YOUR time and money" mentality... fucking retard.
>>281 Ancient but simple and works. I don't need 3D capability anyway. Maybe D3D or OpenGL could be faster, but I don't care because I don't think it's needed and it's quite a step up in complexity. I just want to see the faces on those mainstream browser developers when a pure and simple GDI-based solution blows away their bloated renderer that needs a several-times-faster GPU...)
As for porting, not so concerned - libXt/Xaw or whatever it's called on *nix should provide equivalent functionality on any system with X11. I don't care how hard it is to port because chances are if I want it to be efficient on a specific platform I'm going to have to use platform-specific things and end up rewriting a lot of the code to take advantage of that. Look at something like Dillo for example - I haven't tested it much on *nix, but on Windows it's far more bloated because it has to drag along its own *nix GUI libraries and doesn't even feel like a native application. Forget about making a lowest-common-denominator monstrosity that performs half-decently on a ton of platforms, concentrate on one platform first and others afterward.
Name:
Anonymous2014-11-17 23:11
>>285 Why do you insist on academics being the ones who care about ``understandable programs''? They're exactly the ones who care about microoptimizations and make programs unreadable and full of abstract bullshite.
Are you sure you're not mixing them up with the ENTERPRISE crowd?
Name:
Anonymous2014-11-17 23:41
I just want to see the faces on those mainstream browser developers when a pure and simple GDI-based solution blows away their bloated renderer that needs a several-times-faster GPU...
IIRC GDI is partly hardware accelerated (poorly, since it was never meant to be used that way) since Vista, so I can't see a GDI renderer ever beating a renderer that uses GL/D3D directly.
For example, compare how to do something that should be simple in OpenGL, like rendering some vector graphics
I thought you weren't going to implement the fancy shit like vector graphics and SVG? The fact that you think bézier curves would be "the one thing that should be simple to implement in OpenGL" shows that you don't have any understanding of the graphics pipeline. GPUs are not magic graphics pixie dust, they're machines that eat vertices and shit pixels. You can render them in multiple ways with OpenGL; on newer cards, tessellation shaders (and to a lesser extent, geometry shaders) are basically designed for turning bézier surfaces, the 3D equivalent of bézier curves, into triangles. So you could easily do the same thing in 2D. On older cards, you could do the curve->lines->triangles conversion yourself in software, or you could just put all of it on the slow path and render it all in software, like most people do for text. Point is, it's a choice that your application has to make and not something that belongs in DA STANDAD in any way.
However, if you ignore the arbitrary vector SVG shit like I thought you would want to, then 99.99% of graphics rendering is going to be basic shit like rectangles, lines, circles, and scaled images, that any GPU can chew through with ease.
As for porting, not so concerned - libXt/Xaw or whatever it's called on *nix should provide equivalent functionality on any system with X11.
At least with GDI you have stability on your side, but it's pretty likely that the X11 libs are going to die in a few years when the Wayland/Mir switch happens.
but on Windows it's far more bloated because it has to drag along its own *nix GUI libraries and doesn't even feel like a native application.
There's a difference between not using a native UI for the "chrome" and not wanting the guts of your implementation tied to one platform.
The fact that you think bézier curves would be "the one thing that should be simple to implement in OpenGL" shows that you don't have any understanding of the graphics pipeline. GPUs are not magic graphics pixie dust, they're machines that eat vertices and shit pixels.
I hate to stick up for Cudder, but in the olden days we had some shitty yet remarkable support for analytic objects, which weren't described in verts. So it might just work.
However, if you ignore the arbitrary vector SVG shit like I thought you would want to, then 99.99% of graphics rendering is going to be basic shit like rectangles, lines, circles, and scaled images, that any GPU can chew through with ease.
Not so. Have you heard of floats, reflow? This shit is everywhere and it sucks. Once thats done, you sure can shit it out of a GPU pretty quick, but the GPU does the least of the work in the end so who cares? See also: https://github.com/servo/servo
Don't get me wrong, I think Cudder is crazy and GDI is awful but somehow I think that's probably the point.
Name:
Anonymous2014-11-18 2:38
I hate to stick up for Cudder, but in the olden days we had some shitty yet remarkable support for analytic objects, which weren't described in verts. So it might just work.
I believe most early graphics hardware basically consisted of one or two fast serial DSPs, so it wouldn't have been that weird for them to use a "software" rasterization method like a scanline rasterizer for splines/bézier curves/etc; this is essentially how they implemented triangle rasterization or anything else as well.
You can do anything you want with compute shaders now, but 1. it's not going to take advantage of the fixed-function hardware like the triangle rasterizer, and 2. you're not going to get good parallelism unless you need to render hundreds of bézier curves for some reason; the only legitimate usage I could think of would be high-quality GPU-accelerated font rasterization, which isn't a terrible idea come to think of it. So again, given that there are so many different ways to implement these things with their own tradeoffs, it makes little sense to bake it into an API that is supposed to be a thin shell over the hardware. The fixed-function pipeline is dead.
Aside: lol, Firefox wants to correct "GPU-accelerated" to "GNU-accelerated"
Not so. Have you heard of floats, reflow? This shit is everywhere and it sucks. Once thats done, you sure can shit it out of a GPU pretty quick, but the GPU does the least of the work in the end so who cares?
Because it can save CPU time that would be wasted on a task it isn't suited for while the GPU is mostly sitting idle, because doing very simple rendering on the GPU is going to use less power than doing the same task on the CPU, and because you have to go through the GPU at the end anyway so you might as well take advantage of it.
But hey, it won't run on grandthing Cudder's Win95 Pentium, so it's not acceptable.
Name:
Anonymous2014-11-18 3:39
I believe most early graphics hardware basically consisted of one or two fast serial DSPs,
That's not really the point. All cards can still do it (just not in "modern GL"), and the output quality is as good as the display can handle. If you're linking GL, you might as well use it.
GPU-accelerated font rasterization, which isn't a terrible idea come to think of it.
It's been done. It's neat, but it chews up your entire GPU with only a single column of text. The reflow on a modern web page (or desktop) is harsh.
Because it can save CPU time that would be wasted on a task it isn't suited for while the GPU is mostly sitting idle,
You do get a boost out of it, but it's tiny by comparison. For most of the page you have to construct the pixmaps on the CPU anyway. I don't think anyone would bother if they weren't already linking gl for use with webgl. PS. I hate to break it to you, but scrolling isn't just blitting, a lot of sites modify the DOM in scroll handlers. Yes it's stupid and I hate it but that doesn't change it.
Name:
Anonymous2014-11-18 4:28
That's not really the point. All cards can still do it (just not in "modern GL"), and the output quality is as good as the display can handle. If you're linking GL, you might as well use it.
I can pretty much guarantee you that they're emulating it on the CPU or in a shader. It may be easy to use the fixed function pipeline, but everyone's abandoned it for a reason. You can almost always do things better yourself. Not to mention, you don't get any fixed function support on GL ES devices, nor in the newer GL or D3D contexts.
It's been done.
I'm aware of a library that precalculates all the glyphs into a texture and renders like a bitmapped font, but that's not exactly the same.
It's neat, but it chews up your entire GPU with only a single column of text. The reflow on a modern web page (or desktop) is harsh.
Eh, I don't see why i.e. FreeType would be any faster at rendering the glyphs.
You do get a boost out of it, but it's tiny by comparison.
[citation needed]
PS. I hate to break it to you, but scrolling isn't just blitting, a lot of sites modify the DOM in scroll handlers.
But Cudder-sama is ignoring those parts of the spec.
Name:
Anonymous2014-11-18 5:54
>>291 You're still missing the point. "You can almost always do things better yourself." Analytic objects? Really? They look really good in GL, for what they are at least. You're going to spend a lot of time doing a bad job of it, that's what you're going to do.
I'm aware of a library that precalculates all the glyphs into a texture and renders like a bitmapped font, but that's not exactly the same.
And not what I'm talking about. If I thought it was, I would have written it off as "looks like shit" and "we stopped using bitmapped fonts for a reason" immediately.
Eh, I don't see why i.e. FreeType would be any faster at rendering the glyphs.
Because merely rendering glyphs doesn't render text.
I forget what the exact problem was, but it was pretty fundamental. I think it had something to do with the amount of data required to represent the glyphs created a lot of tension, and used up a lot of the GPU. Sure, it was faster, but so much less efficient that it isn't really worth it to actually do it (i.e. you do want to draw graphics with your card, right?) Keep in mind you have kerning, reflow and all that stuff to worry about, and yes, you need to do it on the GPU or else you will just waste time copying data back and forth.
Someday I hope it works out well. It's not going to happen on today's hardware though. Moving on.
[citation needed]
If you really think compositing some pixmaps is so hefty when compared to rendering them on a CPU, I would love to hear all about how that's supposed to work. If you think you can do the rendering efficiently on a GPU I encourage you to try. Many people will thank you if it works.
I'll see if I can find you a citation though.
But Cudder-sama is ignoring those parts of the spec.
Fine, but: in that case you can do the same thing on the CPU. I know you still think compositing is so expensive (even when we're not doing blur and other effects, are we?) so there's probably not much in this line of discussion.
Name:
Anonymous2014-11-18 8:41
You're still missing the point. "You can almost always do things better yourself." Analytic objects? Really? They look really good in GL, for what they are at least. You're going to spend a lot of time doing a bad job of it, that's what you're going to do.
Graphics programming, motherfucker. No one cares if your result looks the same, we want you to do it as fast as possible. If you don't want to put the effort in, get the fuck out and become an HTML apper.
Because merely rendering glyphs doesn't render text. I forget what the exact problem was, but it was pretty fundamental. I think it had something to do with the amount of data required to represent the glyphs created a lot of tension, and used up a lot of the GPU. Sure, it was faster, but so much less efficient that it isn't really worth it to actually do it (i.e. you do want to draw graphics with your card, right?) Keep in mind you have kerning, reflow and all that stuff to worry about, and yes, you need to do it on the GPU or else you will just waste time copying data back and forth.
Text rendering, not layout, kerning, etc. You don't really seem to know what you're talking about, but for the record, I'm talking about RASTERIZING GLYPHS, COMPUTING THE PIXEL COVERAGE OF BÉZIER CURVES on the GPU, and not anything else completely orthogonal to that goal.
Good fonts have kerning information built in, so that you don't need to rasterize the text to tell how the characters should line up. You just plow through the character widths+kerning info on the CPU to produce a stream of characters and their positions, put that in the pipeline, and let a shader running on hundreds of processing elements in parallel compute thousands of perfectly antialiased glyphs without breaking a sweat.
Name:
Anonymous2014-11-18 9:07
>>293 Dude, you're arguing against using a pixel perfect, debugged, optimized function of a library you're already linking in favour of rolling your own, for a task that's easy to fuck up.
Text rendering, not layout, kerning, etc.
It's not rendered text until you've done the rest. Sure, if you want to render glyphs, go ahead. They're pefectly usable individual glyphs that have no place being next to one another. If that's all you want, it's fine... and has nothing to do with anything.
Name:
Anonymous2014-11-19 7:08
this thread perfectly encapsulates all of our disfunctional behaviors.
>>303 Really though, >>302-kun is right, >>301-chan was being very presumptuous. There is no we or our on this, it's Cudder's browser, and if I know Cudder (which I do), she is never going to release it. Just like that softice killer, and that decompiler that she swears would destroy the industry if she released it. I'm sure her browser is very good and very fast (Cudder is actually very skilled), but it is going to stay on her hard drive until the end of time.
Anyway, we don't really have board projects. We all just do our own thing and come here to talk down to one another. If it were like it is at, say, /g/ or reddit, where everyone is presumed to be equals, there would be one person doing actual work, while a thousand others bitched and complained at him for not doing things they way they liked, or for not supporting their obscure bullshit platform. Either that, or there would be no work done at all (because they are talentless nitwits, but that's neither here nor there) and everyone would just argue about the name and logo.
Moving on to the next point in this frivolous and unnecessary post that will further clog up Cudder's vaporware thread, we probably should use the fossil repo more. Admin-kike was very nice to provide it. I tried for about five minutes to set it up to work through Tor, but got bored and started fapping to Suwako. I guess I can try again and put something in it.
Name:
Anonymous2014-11-21 2:38
>>304 I would put something up on it, but my projects will also rot on my various hard drives and usb sticks until they are destroyed.
However I would be open to sending copies of my code to some people here. And maybe even collaborating on something. But I would want the collaboration closed to just us. I don't want my gang stalkers to be able to find it, or infiltrate the group later by just clicking their way in.
Name:
Anonymous2014-11-21 10:10
>>306 Just pretend it isn't yours. Put the project up there and continue updating (and accepting collaborating). Nobody needs to know the author.
Name:
Anonymous2014-11-21 11:17
>>307 I can pretend all I want that it isn't mine, but a part of my being will be in the project, and I'm not willing to share this with my gang stalkers.
Name:
Anonymous2014-11-21 16:16
>>308 Sounds like vaporware. Will it ever be released as open-source? I thought you were cool.
Name:
Anonymous2014-11-21 19:27
>>309 It puts me in a tough situation. I want all information to be free and I want to share my creations with the world. But there are also some terrible people in the world. For my own sake I want to deprive these people of knowledge about myself. So my contributions to the open net are limited.
Have you ever witnessed what happens when you are linked to your online life and you piss off some people? Cops going through your facebook posts and interpreting obvious satire as criminal extremism. Angry nerds finding your home address and ordering pizzas. Angry nerds finding out the route you use when you go for a run.
But regardless, you're a retard for judging the character of a person by whether or not they open source their software, RMS cultist.
Name:
Anonymous2014-11-21 21:42
I want all information to be free and I want to share my creations with the world
Nice
But there are also some terrible people in the world.
There are.
For my own sake I want to deprive these people of knowledge about myself
Do you consider a minimalist web browser to be "knowledge about yourself"?
So my contributions to the open net are limited.
What the hell?!
Have you ever witnessed what happens when you are linked to your online life and you piss off some people?
Yes, but what does that have to do with anything? Will your browser piss someone off? Will they link it to your real identity? Why the hell don't you just start contributing anonymously, without letting people know it's you?
Do you consider [personal project] to be "knowledge about yourself"?
Yes. Any material about yourself online can be viewed and interpreted. A possible employer could look at my online work and come to some irrational conclusion and place judgement. Like if I do functional programming in my free time, then I must be one of those crazy haskellers that will want to change the company's code to be pure. Or I don't know how to program imperitively. These are trivial. At worst I become a target of investigation and police acuse my open source software of being ``illegal hacking tools''. Fuck them.
What the hell?!
Why do you care anyways? It's none of your business what I do with my free time.
Why the hell don't you just start contributing anonymously, without letting people know it's you?
If people want to find out who you are they'll analyze what you've posted. See the attempts on Satoshi (bitcoin). If I contribute to a project anonymously, I have to isolate all ideas and methods used in that project. If I accidentally reuse an identifying technique in another project directly associated with me, I'm linked to it. Coding conventions like spacing and variable names are also an issue, but easier to deal with.
Why the hell don't you just start contributing anonymously, without letting people know it's you?
Why would I? Give me a reason that makes it worth the hassle.
Name:
Anonymous2014-11-21 23:43
Coding conventions like spacing and variable names are also an issue, but easier to deal with.
Do it GNU style and you'll never have a problem with people linking you to your code.
Yes. Any material about yourself online can be viewed and interpreted.
Just how odd is your programming style?
See the attempts on Satoshi (bitcoin)
Precisely, nobody's been able to do shit. If pretty much the entire world is busting their ass trying to uncover an anonymous programmer, why do you think a couple of faggots trying to uncover your identity through a browser will do any better?
Coding conventions like spacing and variable names are also an issue
Unless you do stupid shit like Nigger_Dicks-In_my_anus, there are at most four major variable naming schemes, namely FaggotCase, ngrvar, faggot_var or smug-var. Great, they just reduced the search space to 25% of all programmers, which is still a fuckton.
If someone who is trying to deanonymize me is able to read my code, I've already made a mistake. I don't want it to come down to issues like coding style.
Maybe I'll write a compiler that compiles my code to standard C and never share the original source.
>>319 I'll write one to suit my needs, which are likely different from yours. But if you promise not to post it elsewhere, I'll send it to you over a secure channel or something. I don't think I'll be able to boot strap it, and run the anonymizer on itself.
Well, you can share it, but only with people that you reasonably believe aren't trying to dox me. And the communication medium you use should reasonably protect the information from people who may be trying to dox me.
>>306 I understand how you feel. I once posted my website on w4ch and some passerby tried to dox me. I had fake information in the whois, but it was still unnerving to see someone repeatedly try to find 123 Fake St, Chovlsowisopo City, Texas for no other reason than to show off that they could Google ``how do I lok up dns info''. Then they complained that I had fake data on there and wanted to report me to the registrar. I want scared obviously, but it was so frustrating to have someone come into your home and start breaking shit because he thinks it makes him cool, then tell you all about how he's a super skilled cat burglar who's just trying to teach you a lesson.
That said, do you really have stalker gangs that can identify you based only on the style of your code?
>>322 I can't but it's still an improvement over posting it online for all to see. Let the data float around in circles rather than putting it all exposed to the world and giving a world a record of my code, its commit history, and a sequence of time stamps from commit times so they can attempt to infer which timezone I'm in. There's ways around these, but why bother when I'm doing it for free anyway.
That said, do you really have stalker gangs that can identify you based only on the style of your code?
As long as at least one organization in the world opposes anonymous authorship, every pseudo-anonymous author has a common stalker. I don't see that situation changing. The thing that matters is how much resources they have. If it's an angry nerd (like in your case) a horrendous faggot may look up dns information and do something pointless. But there are also very talented people who don't support anonymity. I wouldn't be surprised if there was a stylometry engine for source code.
Name:
Cudder !MhMRSATORI2014-11-22 16:47
What a long thread this has become...
>>287 GDI has been hardware-accelerated since at least Windows 3.x (I have the SDK to prove it.) Some idiots at MS fucked things up with Vista, but GDI-accelerated blits are back with Win7 and I believe they are there in Win8 too.
Name:
Anonymous2014-11-22 18:00
>>325 Can you put your browser on the fossil repo, please? Or are you crazy like the guy above, thinking people will anuslyze your code and link it to your offline persona?
Even sharing your binary will give many information about you: 1: The compiler you used 2: The arch you used 3: The version of the compiler you used 4: Your OS, Distribution or even if you compiled the compiler yourself 5: The time you compiled it 6: The options you passed to the compiler 7: Many information about the version of the linked libraries 8: Symbols and shit etc
Do not forget that for a software to be free you only need to give the source to the people that already have the binary.
Compile from a randomly configured virtual machine.
Name:
Anonymous2014-11-23 0:13
>>332 Like the NSA would care about an anoynmous half-assed implementation of a shitty markup language and a scripting ``language'' pulled out of a Jew's ass, kid.
>>337 He's either green or negro, it can't be both! Or do you mean literally green (in colour) and figuratively negro (in behaviour)? You should pay more attention to your posts; people won't be able to follow your thoughts if you don't give enough explanation. You fucking faggot.
>>340 No, that's not possible. I can see him and he's green in colour. Did you mean negro figuratively or not? That's all we need to know. You should really work on your conversation skills, faget. It'd help us understand you better. Negro and green?! It can't be literally both at the same time!
Name:
Anonymous2014-11-23 21:08
But "literally" can mean anything you want it to these days.
Name:
Anonymous2014-11-23 23:43
>>342 It can't! Just because the retards don't know it's meaning and use it incorrectly, it doesn't mean the word lost its true significance. Stop unironically butchering the language!
Name:
Anonymous2014-11-24 2:19
>>343 From a linguistic point of view, you're wrong. Words change meanings over years based on how society uses them. There are plenty of words that no longer mean what they used to. "Scene" for instance, comes from the Greek word for "tent." The word "meritricious" means "unnecessarily ornate", when it originally meant "related to prostitutes."
Name:
Anonymous2014-11-24 3:08
>>344 Yes, those words have changed meanings from one thing to another unrelated one, but their old and new meaning usually don't imply any kind of contradiction.
On the other hand, "literally" went from meaning "literally" to meaning "figuratively", which is the exact opposite of the old meaning. Now tell me, how many times has this happened in history? I'm guessing none.
Name:
Anonymous2014-11-24 3:15
>>345 You're gonna be so chuffed when you find out how wrong you are.
>>346 Care to provide any examples? I hope I don't live in a world where "nigger" will be used as a slur for well-adjusted white people in the next few years just because "language evolves".
>>352 Somebody didn't take their logic 101 class, stupid nigger.
Name:
Anonymous2014-11-24 17:01
>>345 Off the top of my head, the word "irony" and its derivatives. Furthermore, "terrible" and "incredible." (Originally meaning "inciting terror" and "unbelievable.")
>>347 You're right, I should have said a descriptivist linguistic point of view. There are still linguists who share >>343-kun's philosophy. They are wrong.
Name:
Anonymous2014-11-24 17:03
Dbus. Check em.
Name:
Anonymous2014-11-24 18:57
Fucking retards, what non-problem are you arguing about this time? You'd be better off reading about datatypes a la carte by Wouter Swierstra. That's some real power there.
We re-implement Extensible Effects within `Data types à la carte' to demonstrate the difference with the Swierstra's original approach. It turns out that when it comes to effects, Data types à la carte are not extensible or composable. The insight from the Category Theory of evaluation as catamorphism proved misleading.
Name:
Anonymous2014-11-24 22:53
>>358 We accept the inconveniences of ALCarte. With the superficial differences eliminated, with the extensible effects being `just' an ALCarte library, a gap emerges. The farther we look into it, the deeper it becomes, separating the two approaches by the modularity and compositionality, or the lack of it. The gap goes to the differences in design. The elegant ideas of catamorphisms and algebras, central to ALCarte, seems to have been counter-productive.
>>354 Incredible still means unbelievable. Unbelievable still means unbelievable.
You're confusing the figurative connotation of a word with its direct opposite. Something can be literally unbelievable (space niggers shitting dicks on the moon) or figuratively unbelievable (you're so dumb/hot it's hard to believe, but it's not like I don't trust my personal judgment because I don't mean it in a literal sense).
Something can be literally terrible (Nikita's mom inspires fear even amongst Putin's cabinet) or figuratively terrible (This quality I'm judging right now is so deep it almost scares me, but it's nothing serious so I have nothing to be afraid about)
Are you implying the current use of "literally" is somehow a figurative use of the original word? How can something be figuratively literal anyway?
For you fags who praise the niggers' idiocy and call it ``language evolution'', what word is one supposed to use now if one needs to convey the concept of wanting a phrase not to be interpreted figuratively? Huh?!
Name:
Anonymous2014-11-25 1:01
>>370 You can still use literally. Just because a word gains a new meaning doesn't mean the old meaning magically disappears, unless the old meaning becomes replaced by other words (like "dumb" and "gay", for example.) Given that literally is used in academic contexts, that's not likely to happen.
Also, since we're talking about language evolution, I'd like to point out that you used the phrase "wanting" in the context of "to desire", when that word originally meant "lacking." If the Shakespearian age prescriptivists were here today, they'd shun you for using "want" when you meant "will" or "wish."
Typical academia nihilists and their worship of the inferior masses (niggers and their skittles) and their non-progress. Nigger value of arbitrary change. Commie retards. muh gender queer power studies fuckin evil prascraptavists muh relativity muh subjectivism oy vey evil theists and their objective values approach! get out the nigger dicks!
Name:
Anonymous2014-11-25 1:18
logic is arbitrary these computers and their processors are magic and we can do anything with them typetheorists.jpg
steven ``kike'' pinker is a jew WHO WOULD OF THOUGHT Sexual selection confirmed to be a jewish invetion.
implying peacocks have anything to do with humans implying high percent of gene relation with chimps (niggers?) doesn't actually end up proving you wrong and showing that genes have nothing to do with human psychology
>>327 1. Can be fixed with just the evaluations optimized: Flags 2. Only if really needed on the type of OS, like RTOS and embedded devices. What this really needs is the list of dependencies. 3. Can be removed. Usually not recommended for validations. On a Mass distribution, required (MDr). Personal binaries (PB), no . 4. Same as 2.. Can be removed. MDr, PB up to you. 5. Can be removed. Better system uses version with hash of "update." E.g.: version control systems, delta journal filesystem, GPG signatures, etc.. 6. Required, if not binary fails. But with it you can replace many of the above issues. 7. Read 6. 8. Read 2.
Most of these are a personal user case scenarios versus mass distribution, where you HAVE TO notate these things. You can, if you want, tailor your own modified distribution of some base, like the multiple debian clones, and tailor it with the above solutions, for personal use.
At the end of the day, Jailing your applications with access controls is all you really need to do. X binary does not need to know or touch Y.common.dependencies, which they both share. X only knows the locations of a "common" directory where it can find X.dependencies. But Y Binary on it's own jail cannot, under any circumstance, know X binary called common.shared.dependencies. Only the shared.common.directory daemon knows X and Y asked for it, and it tells the AC deamon such, logs it and hashes it.
IoW: Stop using defaults, you silly goose. But thank you for insight. Never thought of this, until now.
Name:
Anonymous2014-11-25 5:54
>>368 Yes, something incredible is by extention unbelievable, but nobody says "I don't believe you. You're being incredible." Likewise, nobody says "I'm so scared because that was terrible!" The two words have evolved different meanings. Incredible has come to be synonymous with amazing. Terribe has come to be synonymous with bad. If I translated "nomen dei terribilis est" as "God's name is terrible", I'm sure there would be plenty of christians offended by that usage.
Furthermore, as I pointed out on the /lounge/ discussion of this same topic, the word literally itself is a figurative usage. The word literally means "pertaining to letters." (From the Latin 'litteralis", "of letters", from "littera", "letter") Its usage outside of letters is by extension, and therefore, figurative. I also pointed out that etymology does not dictate meaning, but it is nonetheless an interesting note to add, especially since you suggested that word literally can't be used figuratively.
1. Can be fixed with just the evaluations optimized: Flags
What do you mean? Asking the compiler to optimise the evaluations?
5. Can be removed. Better system uses version with hash of "update." E.g.: version control systems, delta journal filesystem, GPG signatures, etc..
Still in binary if you made use of __DATE__ and __TIME__.
8. Read 2.
They are in my binary when I compile with default gcc without using a RTOS.
4. Same as 2..
You mean same as 3
Since most people use the default options or some popular options, using most of the flags will make NSA know what binaries belong to a specific author. This is the biggest problem. If NSA sees the "GCC (Debian 4.2)" missing they will know it's YOU and they will be able to find other binaries made by you.
There are many other stuff that may un-anonymise you, for example if you use only fgetc instead of getc and getchar, they will try to connect it with other binaries that do that.
>>386 If that was true, DRM wouldn't exist. You would be able to create a unique encoding for every media file and put it up for download in a bundle with its unique decoder. Then the pirate and downloader would be able to claim that since it's just an random bytestream (i.e. not a media file in any widely known codec), it's not a media file and doesn't violate any copyrights.
But that doesn't happen. So you're wrong.
Name:
Anonymous2014-11-27 23:11
>>388 He can just put in the most widely used flags regardless of what actual options he used. /thread
>>388 1. instead of having the compiler name in an executable file formats, just have compiled so it does not have any of that info. Making sure it is "generically" optimized. 5. Nope, you can remove __DATE__ and __TIME__ entirely, and just output a revision hash. 8.
They are in my binary when I compile with default gcc without using a RTOS.
Default, keyword there. Why I said you need to recompile using flags for more anonymity about it's source origin. Symbols can technically be done away with on any binary. Most flags and dependency calls can be anonymized too, by just the calling required hash of said Symbols and dependencies.
Even then, you are only identifying the binary with it, not the owner of the OS. 4. No, 2. The OS and distribution are always targeted for an architecture, always. If the binary has an OPcode from another arch it will horribly fail, even if you don't label the binary at all. You don;t even need to mark the OS and distribution, the binary will fail if it it's not running in the proper OS with it's dependencies. No need to mark the binary
Since most people use the default options or some popular options,
We are no most people, now, are we?
using most of the flags will make NSA know what binaries belong to a specific author.
Actually, if everyone is using the defaults to everything, it will make it worse for any intruder to distinguish it from another person that ran with the defaults. NSA included.
If NSA sees the "GCC (Debian 4.2)" missing they will know it's YOU and they will be able to find other binaries made by you.
And, that's the point of spreading a distribution, so that more than one person runs the same/similar system, making it difficult to distinguish it from others following your example. Why do you think people sharing files has done? Make one user more identifiable than the next by doing the same another has done?
if you use only fgetc instead of getc and getchar, they will try to connect it with other binaries that do that.
That's if you let the system poll the binaries in your system, like an improperly jailed system is (like those not jailed at all). Sure, being having a ``different'' scheme of binaries than the norm identifies you, but so does the simple MAC address or serial numbers of your device, which is the real threat to anonymity.
Also, try Cudder's Challenge: >>386 Simple raw binary, I assume assembled, not compiled.
Unfortunately, most programming languages do not support multiple dispatch.
lol
Name:
Anonymous2014-11-30 9:01
>>395 LOL Argument type Return type C++ (since 1998), Java (since J2SE 5.0), Scala, D Invariant Covariant C# Invariant Invariant Sather Contravariant Covariant Eiffel Covariant Covariant
Not one of the mainstream languages gets it right. Only Sather which I haven't even heard about prior to readint this article. All corporate languages are shit.
>>399 KHTML is cut from the same exact cloth as all the other garbage. It goes all the way back to the overwrought compiler architectures used to build them. People these days don't understand the conceptual differences between a preprocessor, a compiler, a linker, and an assembler. These are separate phases and they need to be written as separate programs, and the language designer needs to refrain from doing the work of one phase while performing another.
Name:
Anonymous2014-11-30 23:07
Instead of making a new special browser, why not make different clients for different things?
>>402 They could have written it in assembly and it would be twice as fast.
Name:
Anonymous2014-12-01 8:21
404 NOT FOUND GET
Name:
Anonymous2014-12-01 8:31
>>403 The problem is, picture an ant walking across your garage floor, trying to make a straight line of it. It ain't gonna make a straight line. And you know this because you have perspective. You can see the ant walking around, going hee hee hee, look at him locally optimize for that rock, and now he's going off this way, right?
>>416,417 Mentioned in >>110. Dildlo's parser is a bloody mess - just look at how it parses attributes - by scanning the whole damn tag every time. It's also not very HTML5-compliant either.
tl,dr: It's not perfect. Therefore, it's completely worthless.
Name:
Anonymous2014-12-10 14:41
>>418 Why not revamp the attribute parsing and send the patch to the developers? And looks like they are working on HTML5, they have just added HTML5 character references for version 3.1.
If even then you aren't satisfied, why not fork it? It's a good starting point, just keep what's great and ditch what isn't. Simple.
Can you please make your web-browser source available so we can analyse it, test and send patches? Just use cgit or something http://git.zx2c4.com/cgit/
>>434 Sad that in English some pronouns are called "adjectives" for no reason. "Her" is the possessive form of "she" and thus is a pronoun. It serves the same purpose as all other pronouns (anaphora), as opposed to real possessive adjectives like "Jane's" or "Sussman's".
Name:
Anonymous2014-12-12 19:41
>>435 Debatable. "Hers" would be a real pronoun, as it actually takes the place of a noun. "Her" is an adjective merely because it modifies a noun.
"I have my shoes and hers as well" (pronoun) "I have her shoes" (adjective)
As for "Sussman's" you're describing an inflection of a noun, which doesn't make it an adjective.
Name:
Anonymous2014-12-12 19:53
>>436 As for "her" you're describing an inflection of a pronoun, which doesn't make it an adjective.
Adjectives are definite, pronouns are anaphoric (i.e. refer to something dependent entirely on the context). "Green" or "Jane's" refer to greenness and Jane respectively in any context, while "her" refers to something that has as many meanings as there are possible contexts. Thus, "her" is a pronoun.
Name:
Anonymous2014-12-12 19:55
>>436 Furthermore, "her" couldn't be a pronoun because it could never act as the subject or object of the verb (which is the definition of a noun - and pronouns act as substituted nouns.)
One couldn't say "her is great" nor "I have her"; one would always say "hers is great and "I have hers." The adjective her could only work if followed by a noun.
The same thing could be said for my/mine, your/yours, our/ours, etc.
Name:
Anonymous2014-12-12 19:57
>>438 Then it's a proadjective. It acts as a substitution of an adjective but it's not an adjective. But if "Sussman's" is a nout (an inflected form of a noun), then "her" is an inflected form of a pronoun.
Name:
Anonymous2014-12-12 20:14
>>439 Just because her is derived etymologically from a pronoun doesn't make it an inflected form of a pronoun. The inflected form of the pronoun "she" would be "hers." The adjective "her" is related to it, yes, but that doesn't make it a pronoun in itself. It's actually a determiner. Some determiners can serve as both adjectives and pronouns, like "this" and "that", but "her" cannot. It can only describe nouns and cannot stand in for a noun by itself. Maybe a proadjective is the better term for it.
"Sussman's" is a noun because it's the possessive form. Yes, it can describe other nouns, as in "Sussman's book", but it can also stand by itself, as in "I read that book, but Sussman's is better."
Now don't get me wrong, some adjectives can act as nouns, as in "red is my favorite color" or "hand me the reds" (in reference to cigarettes.) But possessive adjectives cannot do this.
Name:
Anonymous2014-12-12 20:24
>>440 "Her" is an inflection, it's merely the genitive and accusative form of "she". "She" is nominative, "her" is genitive. Cf. German "Sie"-"Seine", "Er" - "Sein".
Name:
Anonymous2014-12-12 20:31
OK, my German is pretty rusty. But that's beside the point. Look here:
In both languages the forms for case as well as for possession are still considered pronouns, or the inflected versions of them. English is shares a lot of its ancestry with French and German; it's lost most of inflection in nouns and adjectives, but kept inflection in pronouns. It's only logical to consider words "her", "him" and "his" inflections of pronouns in consistency with their purpose and role in cognate languages.
Name:
Anonymous2014-12-12 20:35
>>441 No, "her" is not genitive. "Hers" is the proper genitive. C.f. Latin's "tuus" and "tui" (nominative adjective, genitive of "tu" respectively.)
And yes, "her" is the objective form of "she", but that's a coincidence. Other possessive adjectives don't share the same form as their objective forms (like mine and me, ours and us)
Anyway, I'm not saying you're entirely wrong, just that this is debatable. A lot of linguists disagree with each other.
>>442 French has a distinction between possessive adjectives and possessive pronouns just like English does, for instance, "mon, ma, mes" are adjectives, but "le mien" is a pronoun. This is the case with English. "My" is not a pronoun, it is an adjective. "Mine", however, is a pronoun.
For instance, "c'est mon frere" (this is my brother - adjective) but also "ce frere est le mien" (this brother is mine - pronoun.)
This whole argument could have been avoided if you simply checked wikipedia.
Examples in English include possessive forms of the personal pronouns, namely my, your, his, her, its, our and their, but excluding the forms such as mine and ours that are used as possessive pronouns and not as determiners.
So yes, these examples are inflected forms of personal pronouns, but they do not act as pronouns, they act as determiners - thus they are adjectives. The true possessive pronouns are words like mine, hers, yours, etc.
Name:
Anonymous2014-12-13 9:03
>>451 Your post would be correct if you substituted "adjective" with "proadjective". "My" is not a full adjective because it's anaphoric. It's a proadjective.
Name:
Anonymous2014-12-13 9:20
>>452 Please elaborate on how it's anaphoric. I'm not saying you're wrong, I just don't see how it is.
And if it is anaphoric, why would that make it no longer be a determiner? (Determiner and adjective are commonly thrown around interchangeably, but let's stop that right now, since determiner is more specific.)
Name:
Anonymous2014-12-13 9:34
>>453 How is it not anaphoric? Please see Wikipedia which you so cherish:
In linguistics, anaphora /əˈnæfərə/ is the use of an expression the interpretation of which depends upon another expression in context (its antecedent or postcedent). In the sentence Sally arrived, but nobody saw her, the pronoun her is anaphoric, referring back to Sally.
When you say "my house burned down", the house that "my" refers to is determined entirely by the context, i.e. by the person speaking, i.e. by you. Is someone else said "my house burned down", then it would be a different house (unless he used to share a house with you).
On the contrary, if you said "a green house burned down", then the meaning would be independent of context: the house would be just as green if someone else said the same thing (barring the rare possibility of color perception diseases).
Thus, the word "my" is anaphoric, and not an adjective any more than "I" is a noun. If pronouns are words that anaphorically stand for nouns, then the words that do the same for adjectives are simplest called proadjectives. No need to invent superfluous entities like "determiners" or inconsistent rules like "I is not a proper noun but its inflections are proper adjectives".
Name:
Anonymous2014-12-13 10:20
>>454 There is no need for the hostility in your opening line. I asked you a question politely. Yes, I know what anaphora is. My way of thinking was that something like "my house is brown" couldn't refer back to something that was previously mentioned if it was never mentioned to begin with. That is why I doubted it was anaphoric. I had not thought of your perspective, which is why I asked for it. Having considered it, I think you make a solid case for anaphora.
Furthermore, I didn't invent the term "determiner". Any foreign language student/linguist must learn their determiners: articles, numerals, demonstratives, quantifiers, etc. Many people consider possessive "adjectives" (or "proadjectives") to be determiners as well. I hope you realize that the term "proadjective" is used a lot less than "determiner" is.
Name:
Anonymous2014-12-13 12:14
>>455 Proadjectives are a subset of determiners, obviously.
That is why I doubted it was anaphoric. I had not thought of your perspective, which is why I asked for it.
Nice dubs bro xD
Name:
Anonymous2014-12-13 14:08
What about the GUI, Cudder? I hope you call the windowing system directly. Or at least use OpenGL ES. All so called "toolkits" are bloated and disgusting.
Name:
Anonymous2014-12-13 14:11
>>456 No they're not. Proadjectives replace adjectives and govern the verb as a subject or object. They do not modify nouns.
Consider the following examples:
I am stoned. Much more so than I wanted to be. My cat is white, but my dog is more so.
We can tell they're not determiners because determiners are allowed to take other adjectives, but proadjectives cannot, since they take the place of an adjective to begin with. (I can't even come up with an example of this - it's too ridiculous and nonsensical.)
"My" cannot stand on its own, nor can it replace adjectives. In all contexts, "my" replaces nouns, and it must be behind a noun when governing a verb... otherwise the pronoun "mine" is used.
What is needed to draw a pixel through the web 1.) Parse some URI. 2.) Connect to the webserver. 3.) Send a state-less request adding pixel state through cookies. 4.) Retrieve the HTML. 5.) Parse the HTML. 6.) Do the same steps for all the dependencies. 7.) Parse CSS/Javascript/whatever. 8.) Run the required dependencies in your runtime and interact via the big DOM model. 9.) Somewhen draw something for the user. Do premature optimisation by outputting half-drawn layouts because dependencies haven’t been downloaded yet. 10.) ... 11.) Be the main cause of global warming. (Not really.)
Name:
Anonymous2014-12-13 17:45
>>459 But proadjectives can take other adjectives:
her green pubic hair
"My" can replace adjectives:
What sort of fucking monster dog is this? This is my dog, this is my boy
>>465 You still think "my" and other possessives are proadjectives, when they are not, and your argument fails since it is based on this ground. Good job proving to me that "my" is a determiner: now prove that it's a proadjective.
A proadjective is "so" or "too" in the following sentences:
The dog is stoned and so is the cat. (Antecedent: stoned) My cat is high and my dog is too. (Antecedent: high) My penguin is blazed; but less so than me. (Antecedent: blazed)
Proadjectives substitute adjectives, and they function like substantive adjectives: they govern a verb as a subject or predicate. Determiners do not substitute adjectives. In the instances where a determiner is allowed to stand on its own (this, that, those) it substitutes a noun. Not all determiners can stand on their own, but all determiners must be able to modify a noun or adjective. "My" can only modify a noun, it can never substitute and refer backwards to an adjective, and it certainly can't stand on its own (which is what all pro-forms can do.)
So yes, you provided reasonable examples, except they are all examples of determiners and you thus proved my point.
>>466 https://code.google.com/p/plan9front/source/browse/sys/src/libhtml/lex.c#594 - Nearly 1.5K lines of C (my tokeniser is <1K lines of x86 Asm) - Allocates (and presumably frees somewhere else...) every single token - how in $deity's name can anyone think this is necessary? - Tons of reallocs (not even exponentially growing the buffer, only linear, so quadratic time overall!) I showed how bad this could be in >>131,133 - Doesn't look compliant with HTML5
This one may be "simpler" than something like Gecko or WebKit, but seeing these elementary mistakes in presumably more "efficient" and "less bloated" software (these Plan9 guys should know more than me...?) is still a big... FAIL!
>>477 Aww, look at the cute groski with big sad puppy eyes.
Name:
Cudder !MhMRSATORI2014-12-15 14:48
>>477 There's too much fragmentation and bloaty stuff in the *nix world for UIs, you can just use WINE instead.
>>478 I can't see anything wrong with it from a quick glance, but that's not to say it's bad or good --- just that I don't really have the time at the moment to understand it. However, from how it closes tags, it's probably not HTML5-compliant.
>>479 Do you know British English? I think you'd like it more than English.
>>480 Idiotic use of memory has nothing to do with "portability".
There's too much fragmentation and bloaty stuff in the *nix world for UIs, you can just use WINE instead.
Just use OpenGL ES. Everything supports it and it isn't that bloated, I believe. Will the non-UI stuff be cross-platform at least, so we can build a GUI for Linux based on it?
Name:
Anonymous2014-12-15 16:08
alf bed cam dild eebit diggem jam head yod jot cap lamb moo gnu onker pea cup row seam tow ulf wolf wub oobit zed
Name:
Anonymous2014-12-15 16:19
>>488 'll be honest, i'm addicted to anal sex with girls and all kind of anal games especially to huge massive gaped assholes hmmmmm!! I also like fucking girls (or womens) ass with huge toys, ass to mouth, double ass-fucking, ass-fisting, prolapse..... . And i'm not ashame for admit it because i love it to much! I also like to fuck with whores especially when they love it in the ass. So girls and womens... if you wanna know more about me or my anal-interests, don't be shy just ask for it i will answer you with pleasure!!
And i also have ya_hoo for some horny naughty (anal)chat
Hey Cudder, I'm on Linux and I really wanted to use your browser, will you really not develop a GUI for it? You can call X11 directly, if that's such a concern. Or use OpenGL as one person said. Pretty please.
Name:
Anonymous2014-12-16 22:56
Palindrome GET
Name:
Anonymous2014-12-17 0:32
I stole the following code and it tells me >>495 is a LIAR. He didn't get a palindrome as he claims!
module Main
import Decidable.Equality
%default total
data U : List a -> Type where nil : U (List.Nil {a}) one : (x : a) -> U [x] two : (x : a) -> (u : U xs) -> (y : a) -> U (x :: xs ++ [y])
index : (n : Nat) -> Vect k a -> Vect k a -> List a index Z xs ys = [] index (S Z) (x :: xs) (y :: ys) = [x] index (S (S n)) (x :: xs) (y :: ys) = x :: index n xs ys ++ [y] index (S n) [] [] = []
build : (n : Nat) -> (xs : Vect k a) -> (ys : Vect k a) -> U (index n xs ys) build Z xs ys = nil build (S Z) (x :: xs) (y :: ys) = one x build (S (S n)) (x :: xs) (y :: ys) = two x (build n xs ys) y build (S n) [] [] = nil
postulate eq : (xs : List a) -> index (length xs) (fromList xs) (reverse $ fromList xs) = xs
toU : (xs : List a) -> U xs toU xs = replace (eq xs) $ build (length xs) (fromList xs) (reverse $ fromList xs)
data Palindrome : List a -> Type where p0 : Palindrome (List.Nil {a}) p1 : (x : a) -> Palindrome [x] p2 : (x : a) -> (u : Palindrome xs) -> Palindrome (x :: xs ++ [x])
isPalinU : DecEq a => {xs : List a} -> U xs -> Maybe (Palindrome xs) isPalinU nil = Just $ p0 isPalinU (one x) = Just $ p1 x isPalinU (two x u y) with (decEq x y) isPalinU (two x u x) | Yes Refl = p2 x `map` isPalinU u isPalinU (two x u y) | No neq = Nothing
isPalindrome : DecEq a => (xs : List a) -> Maybe (Palindrome xs) isPalindrome xs = isPalinU $ toU xs
partial main : IO () main = do input <- unpack . trim `map` getLine putStrLn $ case isPalindrome input of Just p => "yes" Nothing => "no"
>>489 I don't care about "cross-platform", really. If you want to do it right, you have to write something slightly different for each platform anyway.
>>494 Just use WINE. I'll consider writing something using libxt/xaw after the Win32 version is working...
Cudder would probably prefer you just use windows.
OK.
Name:
Anonymous2014-12-19 10:28
Cudder, how would you feel about hosting the browser (when ready) on KolibriOS's repository and, later on, working on a port for it? I'm almost sure they would like this idea too.
You could email to MenuetOS, since they have also the html decoder done, fully in assembly.
Name:
Anonymous2014-12-19 13:49
The KolibriOS have shown interest on writing a lightweight browser in assembly before. Maybe they'd be interested in helping.
Name:
Anonymous2014-12-19 13:58
>>511 I checked your dubs and have deduced that they are sweet, bro xD
Name:
Anonymous2014-12-19 14:25
YOU KNOW A PROBLEM I REALLY HATE THAT I HAVE WITH MY BROWSER, CUDDER?
WHEN I TYPE "www.bbs.progrider.org/prog" IN MY URL BAR IT TELLS ME THE PAGE IS NOT FOUND! I HAVE TO GO THROUGH ALL THE TROUBLE TYPING "bbs.progrider.org/prog" TO GET THIS PAGE TO LOAD!
YOU SHOULD FIX THIS GLITCH IN YOUR NEW BROWSER, CUDDER, IT IS SOMTHING THAT US POOR CATS WHO CANT GET A BREAK FROM THE TAXES AND THE INS AND OUTS OF DAY TO DAY LIFE SIMPLY CANNOT STAND!
Name:
Anonymous2014-12-19 19:25
unsigned int hash(const char *s){ return strcmp(s, "hash"); }
Name:
Anonymous2014-12-22 17:17
Cudder is a troll, he will never deliver anything.
But this might be a good start for someone interested in the project.
- Hubbub: HTML5 compliant parsing library - LibCSS: CSS parser and selection engine - LibDOM: implementation of the W3C DOM - Libnsbmp: decoding library for BMP and ICO image file formats - Libnsgif: decoding library for the GIF image file format
Just start from there, cleaning those stuff up and adding everything else that's needed (especially javascript and an intuitive and minimal GUI). No need for Assembly.
>>512 Just because there's no language that has never had a vulnerability in programs written in it, doesn't mean it's easier to write insecure code in some languages (C, PHP, Ruby, ...) than it is in others (Scheme, Java, Go).
In general, managed memory is more secure than unmanaged memory (otherwise why not just ring0 everything? So Fast!!). Of course it doesn't matter in the hands of a True Master but you and I both know we're not True Masters. See: every buffer overflow since the beginning of time.
So really what we're looking for is a boring, strongly-typed language with managed memory. Vulnerabilities will still happen, but with less regularity.
What is wrong with NetSurf? Just contribute to it.
Name:
Anonymous2014-12-30 13:54
>>529 Cudder has posted in this very thread what's wrong with netsurf.
Name:
Anonymous2014-12-30 14:07
>>530 The only time Cudder talked about netsurf was on >>110 but it was indirectly (servo takes netsurf as basis sometime).
I can't see why not use NetSurf.
Name:
Anonymous2014-12-30 14:11
>>530 Cudder is a troll who never delivered anything (and won't deliver his "browser" either).
Name:
Anonymous2014-12-30 18:31
>>526 SQL injection is a terrible example to bring up. If can be fixed with a library that escapes all strings. Don't allow the programmer to provide their own strings. Problem solved at the expense of efficiency and convenience.
otherwise why not just ring0 everything?
Some programs are malicious. If all programs shared memory, an unprivileged program could intentionally interfere with the memory of programs running under more privilege. Not every memory error is a bug.
Of course it doesn't matter in the hands of a True Master but you and I both know we're not True Masters.
Maybe not. But managed memory is not the only solution, and is not an adequate solution. There are still vulnerabilities in the support libraries. See java. See flash. Which is safer, running a 5K line C program or a 4K line java program that uses 100K lines of C/C++ in the standard libraries? Keep in mind these libraries are standard and studied by every hacker that targets java.
more magic means more ways things can go wrong. The more a language tried to do behind your back, the easier it is for things to slip by unnoticed.
There is the other side of the spectrum, where a language requires you to write so much the actual logic of what is happening is obscured.
>>534 In a multiuser operating system, one user can attempt to attack other users or escalate their own privilege.
Name:
Anonymous2015-01-01 1:17
>>532 yeah, I know, and he doesn't give a shit about anything other than tiny optimisations. some value correctness, code simplicity, portability, etc. cudder only cares about how fast and how little space his shitty programs use.
what a fucking weeaboo
Name:
Cudder !MhMRSATORI2015-01-01 6:41
>>518 You and the rest of the user-oppressing DRM-advocating gang. Who do jailbreaks exist? Insecurity is freedom. Keep this in mind: "Those who give up freedom for security deserve neither."
>>535 We're talking about personal computers here, not SOA cloud crap. There should only ever be one user for a PC, and (s)he completely owns the hardware and software. All of it.
On the topic of "sufficiently smart compilers"... (1) The equivalent of "goto fail;"? mov [ebx+24], eax mov [ebx+24], eax (2) Wasting another instruction, a register (ebx is not used again in this function), and a memory access. call 4706996 add esp, 12 mov ebx, eax mov [ebp-28], ebx ... {neither ebx, eax, nor [ebp-28] are used after this} ... There is absolutely no way a human programmer would write such idiotic code, unless he was drunk or doing stupid copy-pasting. I've been staring at compiler-generated shit for almost 8 hours a day for the last decade or so and I can tell you that COMPILERS ARE NOT SMART.
>>536 Simple code also tends to be small, fast, and correct. Portability is stupid "lowest-common-denominator" idiocy. (Just look at Java... it runs everywhere, but not great anywhere.)
Name:
Anonymous2015-01-01 15:26
>>537 I don't like the use of that quote in this context, because you gain no security from DRM and locked down machines. Only vulnerabilities.
Name:
Cudder !MhMRSATORI2015-01-01 15:35
>>538 It's perceived security. The way they market it just makes people think "this is so safe and secure!" It's called a "jailbreak" for a reason - a high-security prison is one of the most "secure" places to live in. No sane person would voluntarily go live in one, yet that's what people are doing to themselves with computers.
Name:
Anonymous2015-01-02 5:21
>>537 So if you want your kawaii 4chan-esque :^) browser to support ARM, do you compile x86 asm to ARM asm?
>>540 If/when there is a need, I'll just write an ARM version.
Name:
Anonymous2015-01-03 1:53
>>543 Why don't you contribute to NetSurf instead of trying to create a new web browser (a Cudder™ project that will eventually result in failure)? I'm starting to believe you really are a troll.
Name:
Anonymous2015-01-03 2:42
>>544 Because it is not his job to please you, and he can work on any project that he likes, whenever he likes, however he likes.
Why aren't you contributing to NetSurf?
Name:
Anonymous2015-01-03 2:51
>>544 Man, I don't care how much of a pathetic masochist cudder is. I can make computers do whatever I want. lmao
Name:
Anonymous2015-01-03 3:18
Man, I don't care how much of a pathetic masochist 546 is. I can make software do whatever I want. rofl-la-mo
- Using switch statement and explicit case numbers to implement the tokeniser FSM instead of simple gotos and implicit position-based FSM. This means it has to go through that switch every time through the main loop, even if the next state is the same, instead of just jumping to the right place.
- Making every damn state a function. The amount of work that has to be done in each state is tiny, but somehow they've managed to bloat them big enough to look like each one of those functions is nontrivial. There is a ton of duplicate code as a result - for example, compare hubbub_tokeniser_handle_attribute_value_dq(), hubbub_tokeniser_handle_attribute_value_sq(), and hubbub_tokeniser_handle_attribute_value_uq(). (The names are ridiculously long too.) Each one is over 40 lines and performs basically the same thing... can you spot the differences between them?
Here's the corresponding part of my parser's tokeniser; it handles all 3 types of attribute values. attrv_unquoted_loop: cmp al, '>' jz finish_attr_done call [ebp+htmlp.func_iswhs] jnz attrv_loop finish_attr_done: ; omitted code here finishes an attribute and emits a tag or starts a new one (~10 lines) ... find_attrv: xor bl, bl ; presume unquoted ; omitted code here scans for start of an attribute value (<10 lines) ... cmp al, '"' jz attrv_quoted cmp al, "'" jnz attrv_unquoted attrv_quoted: mov bl, al ; save quote char inc edx ; skip quote char attrv_loop: call [ebp+htmlp.func_getchar] ; EOF - ignore attrv_unquoted: or bl, bl jz attrv_unquoted_loop cmp al, bl jnz attrv_loop jmp finish_attr_done I've shown quite a bit more than the actual unquoted/quoted attribute value states, just so you can follow the structure around it, and yet this code in x86 Asm is still shorter than one of Hubbub's functions, in C, that does a tiny fraction of the real work this does! The actual quoted/unquoted attribute value states are represented by these ten instructions: attrv_unquoted_loop: cmp al, '>' jz finish_attr_done call [ebp+htmlp.func_iswhs] jnz attrv_loop ... attrv_loop: call [ebp+htmlp.func_getchar] ; EOF - ignore attrv_unquoted: or bl, bl jz attrv_unquoted_loop cmp al, bl jnz attrv_loop jmp finish_attr_done I'm not claiming to be an expert on HTML parsing by any means, but this code is so short because what it does really is that simple - unquoted attributes are terminated by > or whitespace, and quoted ones are terminated by their quote character. There's nothing at all deep or complex about this, yet Hubbub's version makes it look like even "lightweight" code (which they claim to be) needs to do all that shit so it gets used as "evidence" by all the people claiming "browsers need to be complex!"
- Character references don't need to be handled by the tokeniser, since the presence or absence of any '&'s doesn't affect tokenisation. There's another chunk of complexity that could be factored out. I mentioned this in >>110 already. As expected, Hubbub takes the stupid route.
- DOCTYPE tokens, same thing, already mentioned above.
- EOF - this is another bloater. Hubbub checks for EOF in the code of every state(!), but if you read the spec you'll see that the number of operations upon EOF are limited to two: not doing anything or "emit the current token", so my EOF handling is done in getchar. The cases that don't do anything don't need any code, the ones that do are recorded in an array (there's only 16 entries) and the right place is jumped to when the EOF function is called.
- Partial input handling: this is all handled in getchar - which returns "up two levels" to whatever called the parser when it runs out of input (try doing that in C!) The input is one big buffer which gets resized and moved as needed. I'm not sure what Hubbub does here, but it's probably more complex than this.
- Output interface: Hubbub stuffs everything into a "token" structure and then calls one function, token_handler(), to push the results out. It has functions named emit_current_tag(), emit_current_comment(), emit_current_chars(), etc., but all those have to go through that one token_handler() function. On the other side, the tree construction has to then switch on that type, just to call the right function, when they could've made the tokeniser call those different functions in the first place. How stupid is that? It's [i]bloody-panties-on-head retarded!![/code] I take the sane route with my tokeniser interface:
One function for each token type, as it should be. No need for a "token type" either, because the function being called implicitly determines what token was emitted, and it can directly read from the right fields of the parser/tokeniser structure to get its info. The pointer to the parser structure is in a register already. Simple and efficient. Tree construction is currently in C so I have to fight with stupid HLL calling conventions bullshit (I use ecx for a loop counter - the way it should be used - and ebp for the parser structure, but __fastcall wants to put the first parameter in ecx!!) but I expect that'll change once I rewrite that part in Asm too.
tl;dr: I'm not going to touch NetSurf, because it wouldn't be NetSurf anymore if I did.
Name:
Anonymous2015-01-03 14:36
>>549 See if you can fit a tokenizer into the symbol space used by hubub's.
Name:
Cudder !MhMRSATORI2015-01-03 14:48
P.S. anyone else who wants to try "fixing" the parser and/or telling NetSurf devs about this, go ahead, but I doubt they'll listen...
Apparently this new HTML5 parser was the result of GSoC - where n00bs are paid to churn out as much shit code as they can in a limited timeframe. No wonder it's full of amateur mistakes.
>>552 Well all those long function names must be using up a lot of space in the symbol table when compiled to object code. You could probably fit a small tokenizer in there.
Cudder, do you have any idea when your code-cleanup will be ready? A rough estimative? I'm really excited to go through it and maybe even try a Linux port on my free-time. I feel disgusted every single day using these other bloated browsers.
Name:
Cudder !MhMRSATORI2015-01-04 15:11
>>553 Function names are not really a runtime concern, since the tokeniser is not something you would be dynamically linking anyway. They just make the source code really annoying to read. But seeing as my tokeniser is ~1KB, I'm pretty sure it's smaller than all the function names combined; for comparison, my post in >>549 is over 5KB already.
>>555 No idea (and work is starting back up so probably not all that much time for the coming month or two...) Remember that this is just a parser and DOM viewer, not anywhere near a full browser yet. >>123 is around what it's like at the moment. It's still in need of a CSS parser/renderer.
>>557 Although I don't know Rust that looks much better at first glance... but the trend of splitting everything into a bunch of relatively tiny files is still a bit irritating. There's still some duplication especially in the attribute quote handling, leaving in "parse error" cases is useless for something intended for a browser, character references are being done inline, and it's a pretty dumb literal translation of the standard, but this is definitely better than the mess of Hubbub.
However, I haven't looked at the binary resulting from this so can't compare directly...
It's around as verbose as the HTML5 syntax spec if not more, but somehow also less informative and quite hard to follow. The selector syntax is in a different spec. There are 32 token types, if I counted correctly... and the spec isn't in the form of a state machine.
Does anyone find it funny that the CSS parser may end up being larger than the HTML one...?
I might end up combining/simplifying what I can from the two specs and end up with something CSS2.5-ish.
Name:
Anonymous2015-01-19 22:53
>>559 No it's not. HTML is a matter of document markup. CSS is about the visual elements of the HTML document. It makes sense to me that your CSS parser is larger because it will need to deal with a larger set of possible inputs.
Shitty version of macros. Use a Lisp (or roll your own, you dumb nigger) if you want to do wizard like things with your code.
heavy code composition
wat? googled that and got some bullshit about OOP. fuckin normalfag
Name:
Anonymous2015-01-21 3:06
>>570 I wouldn't argue that the latter is of actual benefit to anyone. Deep composition isn't abstraction, it's obfuscation, and any language that actively encourages it is creating more problems than it sets out to solve.
If you’re writing or modifying CSS parsing code in Servo (e.g. adding a new CSS property), you should be aware of and follow the conventions documented here:
Previously, parsing was based on "component values" that were either tokens, or blocks/function that contained a vector of more component values, forming a tree. Parsing functions would take a `&ComponentValue` or `&[ComponentValue]` parameter as their input.
Now the input is represented by a `&mut Parser` that tracks its own position within the input and yields tokens. When encountering a function token on block-opening token, you can get another `Parser` object for the arguments/contents. Otherwise the block is just skipped. Alternatives can be expressed by saving and restoring the internal state of the parser. (This is cheap, just copying 16 bytes. However some tokenization work may be duplicated.) Everything relies heavily on `Result<_, ()>` types and the `try!` macro (which returns early on `Err`) to make the code easier to read and maintain. (For what it’s worth, the diff stat is +1,949/-2,319 lines.)
Finally, string components of tokens now use the `CowString` type to borrow from the input when possible and avoid many allocations and lots of copying.
Name:
Anonymous2015-01-22 14:27
>>574 Wow that is an impressive design change. Ok, it sounds like the old design was pretty crap. But the new design is good.
>>573 Code composition and generic programming (in C++ and Java) have benefited me over the years. In the industries that I've worked in (I've been working for 18 years now), I've noted various patterns in data structures and algorithms for the class of business operations that I've experienced. One of the reasons that I'm effective at delivering my work is because I reuse and repurpose the same old generic modules I've already written in the past (for the code that's copyrighted to me). I don't know why you consider abstraction as obfuscation because I always deliver a comprehensive set of software system models that model the different parts of the system. Everybody with half a brain can look at my models and comprehend how my system works.
>>578 Spare us the elevator speech about your SCALABLE TURNKEY ENTERPRISE SOLUTIONS please.
Design attributes that are unique to C++ are not good, and good design attributes are not unique to C++. You can compose abstract data structures in C too, if you really need it. The fact that you don't usually need it is not an indictment.
Name:
Anonymous2015-01-25 9:31
>>579 I would just gently remind you that any language without generics is useless. C is a language without generics.
Name:
Anonymous2015-01-25 9:33
>>580 I wonder how we coped before Bjarne came along and saved the world.
Name:
Anonymous2015-01-25 9:44
>>580 It is with generics now, if your compiler supports _Generic thats how how i implemented type-agnostic,variadic fprintf in a single macro(p(...))
Name:
Anonymous2015-01-25 9:48
>>581 Generic programming was pioneered by Ada, not by this retard.
Name:
Anonymous2015-01-25 9:53
>>583 Yes, exactly. I was mocking >>578 who was dick-waving about
generic programming (in C++ and Java)
Name:
Anonymous2015-01-25 11:14
>>581 Stepanov added templates and STL to Sepples, not Bjarne. Americans are not smart enough for those kinds of things. Even Ada was created by the French.
Name:
Anonymous2015-01-25 11:36
>>582 Wow, there's even a library based on it. Probably a pain to use, but it's still a commendable effort to make C at least a little useful. http://sglib.sourceforge.net/
Name:
Cudder !MhMRSATORI2015-01-25 16:11
>>574 I don't know Rust so I can't examine this in detail, but...
When encountering a function token on block-opening token, you can get another `Parser` object for the arguments/contents.
I'm pretty sure you don't need to create another bloody object for that.
This is cheap, just copying 16 bytes. However some tokenization work may be duplicated.)
Tokenisation is almost certainly going to take far more time than "just copying 16 bytes" so duplicating work is definitely a BAD idea here.
Finally, string components of tokens now use the `CowString` type to borrow from the input when possible and avoid many allocations and lots of copying.
>>580-581 You can fake templating in the preprocessor if you really need it. It's ugly and I won't defend it except where it's absolutely necessary, but it is possible. The need to write generic code arises comparatively rarely in C (struct composition and private void pointers go a long way) so the situation isn't as dire as people coming from languages with generics in their standard libraries might think.
What a mess... no reason I can see for "colon-token", "semicolon-token", and "comma-token", amongst others, to be separated out, when they could've just put them in with "delim-token". Ditto for "whitespace" since it get skipped over anyway - no sense in pushing that up to the parser. This needs to be transformed into a more usable set of states first.
>>596 Just admit you're never finishing your browser, so we can continue with the Cudder is all talk and no action epic meme instead of complaining about the W3C.
You fuckers should stop wasting so much energy on ``improving'' the HTML/CSS shit and create something half-reasonable instead.
Name:
Anonymous2015-06-02 1:17
>>599 We should at least have a reasonable implementation of the shitty standard so we can access services that use it with secure software.
Name:
Cudder !cXCudderUE2015-06-02 6:48
This state diagram is becoming rather hairy... but it looks like all that's really needed are identifiers, numbers, strings, and operators. That brings it more in line with the complexity of a C tokeniser, which isn't so bad, but looking at the spec you wouldn't think that.
>>600 This. >>599, if you'd only read the rest of the thread you'd realise that this is not about reinventing every bloody thing, but figuring out how to more efficiently make use of existing infrastructure. Systems don't exist in a void. No one will care about a new Web that almost no one can access.
You fuckers should stop wasting so much energy on ``improving'' the HTML/CSS shit and create something half-reasonable instead.
Something reasonable would be gopher. But you can't use it to access the web as we know it, so it's useless.
We should instead at least have a reasonable implementation of the shitty standard so we can access services that use it with secure software.
Unless Google starts marketing and pushing gopher as the new thing, we are lost with HTML/CSS/etc. And I would like to have a proper browser to access the world wide web: Cudder's browser.
Too bad it's all a wet dream, since we know Cudder won't deliver.
You can whine all you want but I haven't seen anyone else in this thread claim to have written any significant parts of a browser either, nor thrown out some ideas... I already have most of an HTML parser done, and moved onto a CSS tokeniser now.
After that it will be CSS matching and the renderer, and then more UI stuff (settings, etc.) Then it may be ready to release.
It's a fun thing to see that when using Asm, you're not forced into the dogma that a program must be composed of functions (or objects). You can jump anywhere, and manipulate the stack to "call" or "return" to the appropriate place. With this the CSS parser becomes so much simpler, much like the HTML one did. The main state machine doesn't even need to check for and handle EOF explicitly - it's getchar() which does, and on EOF it jumps to the right handler based on the return address.
Fuck Dijkstra. He got it all wrong. gotos are the way to go.
What will be this browser's policy on HTTP referers? It's an absurd that websites know which website you were browsing before going to their page.
Name:
Cudder !cXCudderUE2015-06-15 5:55
>>624 If they were treated differently it would take control away from the user. Those who give up freedom for security deserve neither.
>>625 On, domain-exact (e.g. example.com->example.com will send, example.com->foo.example.com won't, and neither will foo.example.com->example.com), deeper-or-same (allows example.com->foo.example.com but not the other way around), off. Configurable globally and for each domain.
Name:
Anonymous2015-06-15 6:25
>>625 Always copy paste the link. Never click on it.
How will your browser engine deal with this? Also, what's left until you make the current progress public?
Name:
del2015-06-27 22:56
del
Name:
Cudder !cXCudderUE2015-06-28 14:09
>>628 The majority of that page has to do with JS, which means it is completely irrelevant to my browser at the moment: it doesn't have JS yet, and I don't plan to think about the details of it anytime soon. JS features will likely be configurable on a per-site basis.
CSS media queries - this is CSS3, so it is basically ignored. CSS fonts - needs JavaScript to work, so irrelevant. CSS visited - user-configurable per-site, and I'm probably going to indicate visited/not-visited some other way through the UI anyway (e.g. status bar indication) so it's no big loss. Plugins - user-configurable per-site.
User-Agent: your choice. Set it to whatever you want, or don't send one at all. ETag tracking: not supported at all because there is currently no plans to do any caching. "Do not track" header: useless bureaucracy bullshit. You draw more attention using it than not.
TLS/SSL Session IDs: irrelevant network layer concern, and depends what is doing SSL/TLS. The proxy I currently run everything through does not support session resumption at all.
Also, if I'm not posting any updates, then assume nothing has happened.
Also, if I'm not posting any updates, then assume nothing has happened.
Okay, that's reasonable. But what is the mile-stone you want to reach before releasing it in the public domain? Why not release what you have so far right now, so we can start playing with it early on?
But what is the mile-stone you want to reach before releasing it in the public domain?
Acid2 pass. I've mentioned this before, read the threads - especially the one on dis.4chan which was where this whole thing started. ("Low resource web browser")
Currently none of the lightweight browsers, i.e. Dillo, NetSurf, etc. have been known to pass Acid2. Thus, there is no point in releasing something that can't even match existing lightweight browsers in terms of rendering support. I'm not aiming at the links/w3m crowd with a text-based one. It has to be at least NetSurf/Dillo level, maybe even better than IE6, for it to be interesting.
Why not release what you have so far right now, so we can start playing with it early on?
There is nothing much to play with. At the moment, it is only an HTML parser and a very incomplete CSS parser. The only thing it has in terms of UI is a crude DOM viewer you can see in http://bbs.progrider.org/prog/read/1406427616/123 .
webkit is not so bad, i was trying to load a very big HTML file recently, google chrome used 40 megs of RAM, firefox about 150 MB, and internet explorer about 200 megs.
anyway, what are you expecting, the web is a fucking clusterfuck and it doesnt help that browsers are written in sepples.
Name:
Cudder !cXCudderUE2015-07-01 14:34
>>633 Define "very big". It can't have been over 1MB and I assume your RAM usage is the expansion and not the base because Chrome definitely takes more than 40MB just showing a blank page.
Name:
Anonymous2015-07-03 8:12
I don't know man, call me a dreamer, but something inside me tells me one day Cudder will surprise us.
Name:
Anonymous2015-07-03 14:35
>>634 big enough that it hurts when I walk the day after
Best associative data structure for element attributes and CSS properties? There's only a few hundred of the standard ones in total, but they'll be retrieved very often, especially the CSS ones.
Hash tables and fixed arrays are the fastest but most memory-bloating, trees are sort of in the middle, and resizeable arrays and linked lists are O(n) (probably n < 10 for elements and < 100 for CSS most of the time) but smallest.
More disturbingly: Why doesn't there seem to be any information on the time complexities of various operations like attribute lookup in existing browsers!?
Name:
Anonymous2015-07-12 22:48
>>638 Nobody cares to take the time to measure it. So what's stopping you from downloading the source and running your own measurements?
Name:
Anonymous2015-07-13 4:35
>>638 Because it's a document scripting language not something to write an OS in. If it's too bloated, crash the browser and no one will care.
Name:
Test2015-07-13 6:02
I am surprised at 2 things, aftyer not being here in more than a year:
1. this server and domain still live 2. this thread is alive
Cudder, you are one heck of a trooper.
Reviewing the thread, I had an epiphany. Knowing that HTML and CSS are shit markup languages, and you are using ASM to build your browser, why not form new methods to represent the DOM values that are their specifications. It'd make for easier parsing and algorithms, by performing new methods of their representations.
Here's one raw example to illustrate my point by no means the one I want implemented: Element, name, ASM representation, value Doctype, html , dth , 3000h doc_attributes, htmllang, dth + lang#, 3200h doc_attributes, htmlmanifest, dth + manifest(), 3100h Mediatype, img , mi , 5000h Mediatype, music , mu , 6000h Mediatype, video , mv , 7000h
You can also use a lattice to represent values that are "unlocked" to quickly output said HTML/CSS values in a codex. You recall old video games that use matrix master passwords, that if the correct AND OR if condition met, it would return said gate or value for the main loop: e.g.: https://i1.ytimg.com/vi/kE4aJwDhQ94/hqdefault.jpg 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
There are many ways you can re-represenmt the values, and quickly call on the addresses that call the render types for the DOM.
----- Also, for anyone here, please ignore W3C. They are asshats. WHATWG is doing proper standardizations since '04.
Name:
Cudder !cXCudderUE2015-07-13 6:30
>>639,640 That explains why web apps are so fucking slow... and I hate reading source code because it looks like the shit in >>1. But here, for probably the first time on the public Web, is the complexities of attribute storage in the most common browser engines.
A resizable array of unsorted(!) structures. Funny that elements themselves don't have attributes, but a secondary element->attribute hash table is used. Code is disturbingly verbose; just count how many function calls you have to go through from setAttribute to when the thing actually gets written to the array. The resizeable array itself is a bloody verbose mess too:
Code feels a bit less verbose and is more readable than WebKit.
Trident (version used in IE4, no public link to source available):
Resizeable unsorted array allocated off end of element structure.
NetSurf:
Doubly-linked, doubly-indirect(!) unsorted list.
Dillo:
No attributes stored in element structure itself! Reparses the markup for every attribute retrieval operation. :facepalm:
tl;dr: O(n) except for Gecko which may be O(1) for some cases ("mapped attributes".)
I'll go with an unsorted parallel array for my browser; it's probably not going to be worse than what's out there already(especially those "lightweight" browsers at the end) and likely slightly better cache-wise to use parallel arrays than arrays of structures.
Next part: CSS property-value storage. There are many more KV pairs on average than with attributes, so I expect to see some different data structures.
>>641 I have no idea what you're trying to say but it seems interesting enough. You need to elucidate more.
>>643 Thinking before doing seems to be a skill that is rapidly degrading in the current generation... >>549 is an example of what happens if you just dive in and start writing code with a minimum amount of brain use.
Name:
Anonymous2015-07-18 16:33
>>644 Could you at least document all your ideas and prototypes so far? I want to start contributing to an ASM browser in my limited free-time, but I`m not an EXPERT PROGRAMMER enough to start from scratch. Make a summarize with everything you have and post a link to it. You could use pastebin if it`s too big for progrider. It`s just that currently you talk and talk, but we have nothing.
Name:
Anonymous2015-07-18 21:13
Maximize ENTERPRISE SCALABLE SOLUTIONS while minimizing BRAIN USE.
Everything interesting enough about it I've been posting in the previous thread and this thread. If you don't have enough of an attention span to read them, you don't have enough of an attention span to write a browser in Asm.
Name:
Anonymous2015-07-19 1:02
>>649 Not that guy, but could you give us the highlights of those threads and which information is still relevant? Thanks.
Name:
Anonymous2015-07-19 1:51
>>650 Not Cudder, but could you learn to read? Thanks.
Name:
Anonymous2015-07-19 2:12
>>651 That same guy you replied to, I just want to know what from those threads is still relevant today.
>>654 August 2011. It was around the time Mozilla released Firefox 4 and started the ridiculous version number race with Google that I realised how horribly user-hostile and mindlessly oppressive browsers had become and it was necessary to do something about it.
Here's the current roadmap:
- HTML parser/DOM generation (pretty much done) - CSS parser (currently working on) - CSS box generation and attribute computation - Renderer - Network/UI/Misc ** public-domain release ** - JavaScript? WebGL? ...?
Name:
Anonymous2015-07-19 16:38
>>655 Could you make the public-domain release before the UI? Others could use the core of the browser engine to write their own UIs.
Name:
Anonymous2015-07-19 23:08
>>656 No one will and you know it. It may come out one day that Cudder is a tranny\donated money to have Hitler cloned\wants to integrate SystemD and there will be lots of outrage and 666 forks, but those will die off in less than a week and everyone will forget about them and keep using his release.
Name:
Anonymous2015-07-20 20:14
It's too big a task to keep the browser safe. It takes an incredible amount of effort to find and eliminate security holes. To code a browser in assembly would probably make it even more unsecure than other browsers. By the time the browser is in beta phase, you probably have to run it sandboxed anyway, and that eliminated all the benefits of it.
>>658 Actually, no. If you're worried about buffer overflows and such, I've probably spent more time thinking about the lengths of things when designing this in a day than most C developers have in a week.
Of course if you eventually decide to use this browser with plugins like Flash and get pwned because of an exploit in that, it's not my problem... I don't blacklist or whitelist, I let the user decide. Freedom > security.
>>663 Wow, they just immediately had a really long winded and pointless discussion about gamedev that was also devoid of anything interesting. Like, a discussion they put a lot of effort into. Those are some long fucking off topic and boring paragraphs. And then when you bring that up, they shift the blame on you. Like it's your fault they are such boring assholes. ``You should have have written the OP a different way.'' Blah blah blah. Then everything else they say is completely useless. What a toxic group of boring people. If I could punch them in the face like the barbaric nigger I am, I would.
Name:
Anonymous2015-07-21 23:59
>>670 I deleted it. typedef is cool, the issue is the fuckers talking about game-dev all of a sudden on cudder-browser's thread. Off-topic bitches.
>>663 Copying my posts, complete with the few typos, is not helpful. They were intended to be read by those already familiar with /prog/4chan culture, not random users somewhere else.
Besides, I don't need any help at the moment and the whole browser will likely not be in Asm; only the lower-level parts.
Name:
Anonymous2015-07-22 13:47
>>674 Sorry, I only wanted to help. I'm ashamed, Cudder-sama!
Name:
Anonymous2015-07-22 21:29
Please forgive >>675-kun Cudder-sama! I don't want ze to commit sepuku!
You seem to have made a bit of a mistake in your post. Luckily, the users of /prog/ are always willing to help you clear this problem right up! You appear to have used a tripcode when posting, but your identity has nothing at all to do with the conversation! Whoops! You should always remember to stop using your tripcode when the thread it was used for is gone, unless another one is started! Posting with a tripcode when it isn't necessary is poor form. You should always try to post anonymously, unless your identity is absolutely vital to the post that you're making!
Now, there's no need to thank me - I'm just doing my bait to help you get used to the anonymous text-board culture!
Name:
Anonymous2015-08-11 20:36
>>686 LAN networking was the point of ethernet at the time. Since the only real way to access the internet for home users was dialup, the computers sold then rarely had NICs. I doubt that anyone still makes drivers for a Win95, much less hardware that fits a motherboard that old.
This makes me think of a new vaporware I'm going to work on for ten minutes and forget about. How about a BBS that you have to dial in to, but that's hosted over the various free VoIP things like Jewgle Voice or Skype?
You seem to have gotten dubs with your post. Luckily, the users of /prog/ are always willing to check your dubs right up! You appear to have gotten a post number ending in repeating digits when posting! Great! We will always remember to check your dubs when the board you are posting in is a textboard! Posting with a dubs when it is always necessary is great form. We will always try to check your dubs following the culture of the site, since your dubs are absolutely vital to the post that you're making!
Now, there's no need to thank us - we're just doing our best to help your GET in the text-board culture!
>>689 What in the nigger shit are you spouting? There's no difference at the OS endpoint of LAN vs internet networking. Go kill yourself.
Name:
Anonymous2015-08-13 14:27
>>692 Dailup and ISDN modems used RS-232 not Ethernet, cretin.
Name:
Anonymous2015-08-14 20:47
>>693 What the fuck does that have anything to do with IP?
If your machine can route IP over a LAN, there's no difference in routing IP over the internet, fuckwad.
Name:
Anonymous2015-08-14 21:07
>>694 You're the one that's going off on some retarded tangent. Follow the conversation, muttonhead.
Name:
Cudder !cXCudderUE2015-11-09 6:17
Finally with a little more time to work on the CSS part, I've done the matcher and some of the datastructures but still need to figure out a good way to store the properties and their values. Most of them could be stored together with their values in a single 32-bit integer. I just need to map them all...
>>698 Yes, it will be a map, but exactly what type of map? There's plenty of generic types of map but the space of properties and values is small enough that it should be possible to represent e.g. background-color: black in a single 32-bit value.
Careful design of the data structures is important because it's what sets this browser apart - it's not just another Firefox or Chrome or IE clone. Everthing has been designed from the beginning to be as efficient as it could be, before I write a single line of code. I know you might be thinking "just use a std::map<something, something>" but have you ever seen the actual implementation of such things? They're great for mapping a great many arbitrary objects to other arbitrary objects, but horribly bloated for what this particular application needs: a mapping from ~256 or less keys, to a similarly restricted set of small values ("inherit", "none", one of 2^24 colours, one of 256 opacity levels, etc.) A DOM node is not going to have several thousand CSS properties set on it (there aren't even that many in total in CSS3!), and even a hundred is going to be rare. Using a datastructure designed and optimised for 2 or 3 orders of magnitude more items for this is retarded in the same way as invoking Quicksort on a 4-element array.
>>701 What's wrong with just a bitmap of a node's specified properties and a corresponding list of values? The values can be "fat", i.e. background-color, background-repeat squashed into one "background" struct.
>>707 I'd considered that, but that's 32+ bytes just to keep the bitmap in addition to the values, and the list would still need to be searched. A hash table is a bit rich for the purpose, although something resembling hashing might be a good idea.
>>708 I don't think it's that genius of an idea. Maybe to the incompetents that pass as programmers these days, but the demosceners and other old-school programmers would think nothing of it.
Your problem, Cudder, is that all those hormone replacement drugs have eaten a hole in the part of your brain that lets you do academic circlejerking properly. You spend too much time on long projects like writing that web browser in 6502 assembly or the IDA killeror the SoftICE replacement or whatever and never just program something that popped into your head on a whim. You're a Michelangelo in a world that needs Picassos. Lighten up a bit, light up a blunt, and program something fun.
>>716 You are certainly degrading. That's just Church numerals done using lists instead of function applications. Nothing interesting about that. (I do know about "academic circlejerking" and all that abstract bullshite, but whether I actually want to do that stuff is a different matter.)
light up a blunt
That explains a lot...
Name:
Anonymous2015-11-14 10:39
>>716 No wonder you can't explain how it works: it's unreadable from all the define bloat! Should've used def instead.
(define-syntax def (syntax-rules () ((def a ...) (define a ...))))
(define-syntax lam (syntax-rules () ((lam a ...) (lambda a ...)))))
is.
Name:
Anonymous2015-11-14 22:00
>>716 I remember everything I write. It's like a photographic memory for concepts.
Name:
Anonymous2016-02-06 20:46
What do you think will be the hardest part on the browser? The rendering engine, I guess? Could you make a release of what you have so far once the CSS layout is done?
Name:
Anonymous2016-02-07 10:49
>>723 The rendering engine isn't necessarily hard, just tedious with all the tiny bits of configurability that it needs to support.
What's hard is making sure it's secure, and trying to optimize it.
What's hard is making sure it's secure, and trying to optimize it.
*optimise And no, it isn't.
Name:
Anonymous2016-02-07 13:29
>>727 Yes it is. Cudder's solution is incomplete as he decided to ignore the full range of the specification. Feel free to prove me wrong by writing a full spec, fully secure and fully optimized web renderer.
What do you think will be the hardest part on the browser?
JavaScript
Could you make a release of what you have so far once the CSS layout is done?
Once Acid2 passes.
>>724 What do you mean exactly by "secure"? It seems everyone is throwing this word around like some kind of holy grail when it could mean anything from DRM and other user-hostile shit (fuck no, it's not going to be "secure" if you mean that) to buffer overflows (won't happen, there's very little dynamic allocation and what there is will have lengths checked very thoroughly...)
just tedious with all the tiny bits of configurability that it needs to support.
Calculating widths/heights is the most annoying part. One of the reasons why it's taking so long is because I'm trying to simplify it --- the spec is almost always more verbose and complex than it needs to be. Earlier in this thread I shrunk the HTML tokeniser from the absolutely bloated spec into a <1KB binary, so I expect some level of savings for the CSS parser and renderer... optimisation comes naturally from design.
>>730 Alrigiht bitch. Forget showing us the web browser. How about you just show us ANYTHING you have written. You see, we aren't even quite sure you know how to program.
I don't think many people care about that. Good part of the web works without it. Of course it'd be a nice addition to your browser, but I don't think it's essential.
Once Acid2 passes.
How far is it into passing Acid2?
Name:
Anonymous2016-02-07 22:39
Mr. Cudder, do you think your Asm/C performant browser will allow users who have an Intel DX4 to browse the modern web? What do you expect will be the requirements?
>>734 The JS comes later. I'll definitely release a version without any JS support. I don't know how far, since I'm still designing the layout algorithm.
Name:
Anonymous2016-02-08 4:55
Cudder is a male jew roleplaying as a girl.
Name:
Anonymous2016-02-08 12:55
can we get a roadmap with what's done so far and what's missing before the first release (acid2 pass)?
Name:
Cudder !cXCudderUE2016-02-09 3:39
>>739 Done: - HTML tokeniser - HTML parser - DOM tree
>>740 Of those, which won't be portable? Network, of course. For rendering UI, have you looked into Vulkan? Or do you still plan on doing Win32 and then Xlib, separately?
Name:
Cudder !cXCudderUE2016-02-09 11:12
Vulkan
No. No fucking "cross platform" bullshit, especially something that isn't even really out yet. We don't need another bloody layer of bloat or a dozen multi-MB libraries. Windows version will be single binary expected to be <1MB and usable on Win98SE up to (probably, won't test) 10.
I don't really know what to do with *nix yet. Horribly fragmented ecosystem with tons of unstable dependencies. AFAIK there's nothing like a MSVCRT.DLL that I can just link with and get all the standard C library functions on any version of Linux. Instead there is this whole fucked-up symbol-versioning GNU bloatstrosity with all the different libc versions. And that's not even getting into the retarded ELF symbol export/import system which is more like "throw everything together randomly". The PLT/GOT/etc. crap is headache-inducing every time I have to deal with it.
If I was making a hybrid OS with the best features of Windows and *nix, it would definitely have dynamic linking more like the Windows system.
Name:
Anonymous2016-02-09 11:27
>>742 Forget loonix, it's too shitty to use anymore. Stick with real UNIX® and VMS.
Name:
Anonymous2016-02-09 12:13
Instead there is this whole fucked-up symbol-versioning GNU bloatstrosity with all the different libc versions
If cudder ever releases anything (I know, let me dream for a second), I'd put money on it being slower than modern browsers, with a similar footprint as browsers of similar limited functionality.
Name:
Anonymous2016-02-09 21:16
CUDDLER why aren't you implementing your own PCB traces and transistors?
>>749-750 Stop making it look like I'm replying to myself. I'd like a real reply, preferably from CLUTTER shirmself. Anyway, CUTLERY lives in a world with neither deadlines nor abstract thinking, so >>749 is right and >>750 is wrong.
Name:
Anonymous2016-02-09 21:25
>>751 But >>750 didn't claim anything, how can he be wrong?
Name:
Anonymous2016-02-09 21:26
>>752 You know when you show your sister your hentai collection, and she says "that's just wrong"? It's like that.
Name:
Anonymous2016-02-09 21:27
>>753 Cudder should rewrite Windows in Haskell, though.
Name:
Anonymous2016-02-09 21:51
I'll show all you cocksuckers when I make a web browser out of vacuum tubes!
Name:
Anonymous2016-02-09 22:01
>>755 I'll show all you cocksuckers when I make a hydraulic computer!
Name:
Anonymous2016-02-10 3:14
I'll show all you cocksuckers when I make a penis pump computer!
>>745 Yes, a shitty inefficient version can be done in almost no time. I could probably have an acid2-passing horribly bloated browser-ish thing if I just used C++ and banged out classes all day long for a week. That's not the point. It's taking so long because [1] I have tons of other stuff to do and [2] I'm thinking carefully, very carefully, about how to do it. Amortised over the past few months I've probably been spending less than an hour a day on this.
>>747 start reading around >>123. Parser is overall twice as fast as Chrome's, less than 1/10th the size, and that's with a stupid C part I haven't done much optimisation on yet.
Name:
Anonymous2016-02-10 4:47
Couldn't CUDDER, you know, fork Webkit and add his own transvestite assembly code instead of reinventing the wheel?
What's a "cudder"? I remember "cudder jobs" in the Jewish Guild in Skyrim, they were about planting dicks in people's anuses. So are /prog/ cudders the ones who post jewish material to make the government vote degenerate laws?
Well-reasoned, rational argument presented with excellent points, counterpoints and examples as always, Cűnther.
Name:
Anonymous2016-02-11 0:10
>>758 Even if that's true (which it isn't), it's probably fucking terrible Russian code that's hardcoded to everything at hand right now, and as soon as there's any change to HTML/CSS/JS for you to support, you'll have to start over because you don't know what the fuck you're doing.
What've you been smoking? Russians are twice smarter than you.
Name:
Anonymous2016-02-11 21:59
Russians are masters at micro-optimizing useless shit at the expense of everything else, yielding unusable garbage that happens to run 1 brittle scenario quickly.
holy shit remember the get the trips that come soon here!
Name:
Anonymous2016-02-15 19:55
bump for trips
Name:
Anonymous2016-02-16 10:20
Fuck
Name:
Anonymous2016-02-16 10:20
your
Name:
Anonymous2016-02-16 10:20
trips,
Name:
Anonymous2016-02-16 10:21
nigger.
Name:
Anonymous2016-02-16 17:33
>>777 [commentator] son you can't just up and give yourself the alley-oop and slam dunk it yourself, shame on you.
[referee] I declare that the 777 get shall be given to poster of >>778 instead!
[poster] *raises hands, bows before cheering /prog/lidites
Name:
Anonymous2016-02-16 17:39
>>78 If you care about the fucking number on the post, go kill yourself. I shall amuse myself in foiling your number-grabbing attempts. Suck on my >>774-777!
Name:
Anonymous2016-02-16 17:39
>>779 See, I care so little about the numbers on posts that I can't even get them correct!
This guy... forgot to check his own dubs. LOL. What a nab.
Name:
Anonymous2016-02-18 17:23
>>786 If you eschew dependencies on bloated libraries in favour of writing your own ASM to do the same job? As lean as you can get them.
Name:
Cudder !cXCudderUE2016-02-19 12:03
>>790 Linking dynamically uses 12 bytes + length of name + 5 bytes per call (using jump table), or 6 bytes + length of name + 6 bytes per call (using calls into the IAT slots.)
Linking statically uses size of function + 5 bytes per call.
The library is already on the system so might as well use it if it doesn't make my binary bigger.
Name:
Anonymous2016-02-20 3:21
>>701 You might want to hold all colours as rgba, converting them first if they are represented differently in CSS source. Special values like none and inherit could use full transparency and store special meaning in the rgb part, i.e. color:none means full transparency and is equal rgba(0,0,0,0).
I don't know if you want to support CSS and styling completely, but you could consider ignoring some of the CSS attributes, like named fonts in font-family field, etc.
Another thing worth noting is that HTML actually supports only 2 (3) types of tags: block and inline (and inline-block). You could save space ignoring multiple tags and move their special attributes to CSS, as default values. Tables are equal to table blocks of row blocks of field inline-blocks with undefined content.
Name:
Anonymous2016-02-20 5:14
>>791 WHO THE FUCK CARES? The very nature of the HTML/CSS/ES specs demand a fuckton of state, especially if you're going to have decent dynamic response times, and you're quibbling over the number of bytes in a function call.
You have no goddamn idea what makes bloat and what doesn't. There's assburgery nitpicking, which can be somewhat amusing, but this is just being a fucking retard.
Name:
Anonymous2016-02-20 13:07
>>791 Surely if you're hand-optimising the rest of your program in ASM your bottleneck becomes the dynamic libraries that (a) are more often than not going to be written in C and "optimised" by some crappy compiler, and (b) going to have wildly variable performance characteristics on different systems, as they will use different compilers, different library implementations and different versions of libc.
The size of the functions alone (which is apparently your primary concern with static linking) should surely be a negligible cost when taking everything else into account.
Name:
Anonymous2016-02-20 23:56
>>793,794 You both don't seem to understand the purpose of cudder-sama's project.
>>795 Is it to spur discussion on a low-traffic BBS, or to waste everyone's time?
Name:
Cudder !cXCudderUE2016-02-21 12:06
>>792 Inherit is resolved at box-generation time. Opacity is stored with the foreground colour, since the background can be other than just a colour.
I'm essentially supporting all of CSS2.1.
You could save space ignoring multiple tags and move their special attributes to CSS, as default values.
Not sure what you mean by this.
Name:
Anonymous2016-02-22 1:04
A web browser is an application that retrieves documents over a network, and renders them on a computer screen.
To think of a web browser as more than that is insanity. Yet people insist on continuing to try to shoehorn other technologies in to a web browser, and users pay the price in usability while vendors pay the price in maintainability.
Name:
Anonymous2016-02-22 1:26
Firefox needs ~550MiB just for 5 tabs.
Name:
Anonymous2016-02-22 1:35
>>798 The web as a distributed application platform had evolved into this way. It is not insane to ask for reasonable extensions to a simple distributed platform. What I like about web technologies as a distributed application platform is that the development work is high level. I can develop applications very quickly because the low level mechanisms are highly abstracted allowing me to focus on business logic rather than OSI network/operating system logic.
>>799 That measure is meaningless without more context. You need to specify what exact pages you have loaded and what extensions and plugins you have loaded.
You need to specify what exact pages you have loaded and what extensions and plugins you have loaded.
Noscript, ublock, https everywhere and classic theme restorer. Two of the tabs were /prog/rider, one was github, another one was mangaupdates and the last one was google.
Name:
Anonymous2016-02-24 5:23
>>801 Since I don't use ublock, I can't say more about it other than it is a blacklist program, it works by maintaining a massive list of entries to filter in memory. I presume you're using Noscript in whitelist mode so that list would likely to be far smaller than ublock. The other two addons are trivial in memory usage.
As for web page usage, progrider is trivial so that shouldn't count for much. Mangaupdates is also trivial so that shouldn't count for much. Github has plenty of Javascript working the DOM so that could account for something. I assume you've got a Google search page filled with search results, that isn't very big but it has some Javascript to run those pages.
Other factors to consider when evaluating memory usage include Adobe Flash, corrupt Firefox user profiles, Java plugins and Firefox cache.
For comparison, I'm running Firefox 44, with default caching, no Flash, current Java, Lightbeam and uMatrix in whitelist mode. 1 tab for Wikipedia, 2 tabs for Slashdot, 8 tabs for Funnyjunk, 1 tab for progrider, 1 tab for Mangaupdates, 1 tab with Tiddlywiki. I'm using 14 tabs and 650mb of RAM.
Name:
Anonymous2016-02-24 6:27
>>802 I am using the esr version in Debian GNU/Linux.
Of course, changing fonts within a line, bidirectional text, Unicode combiner characters, wrapping of other non-textual inline-block contents and other such options are all fully supported, right?
Name:
Anonymous2016-02-29 18:45
Let's reinvent the fucking scrollbar, which every goddamn platform with a UI already has, and make it behave subtly different from the native one!
Maybe it's easier to make your own UI than to deal with handling hundreds of different UIs. For instance, if the scrollbar width never varies, then that's one less thing you have to worry about.
Name:
Anonymous2016-03-01 0:23
>>815 Why in all of the holy fuck would you have to worry about the width of the scrollbar? The fact that you try to design around that means you're absolute shit and should be shot in the face. It's people like you that demand pixel-specific everything dogpiling HTML & CSS, instead of letting the goddamn software handle it. You fucking retarded monkey who can't handle anything but manual manipulation.
Name:
Cudder !cXCudderUE2016-03-01 12:05
>>812 You mean text-align? Currently only the former. The latter will make it in at some point.
programmer typesetting
Duh.
*14
changing fonts within a line
Yes.
bidirectional text, Unicode combiner characters
No.
wrapping of other non-textual inline-block contents
Conforming user agents [p. 47] may interpret the value ’justify’ as ’left’ or ’right’, depending on whether the element’s default writing direction is left-to-right or
right-to-left, respectively. Looks like I don't even need to care about that... one less thing to implement.
You don't have to be a designer to know what ``justify'' means. You could possibly just have, you know, observed justification in print, and been curious about the fact that all of the line endings line up vertically, and perhaps even looked it up.
But instead, you are going to pretend like there's no way that you could have known about it, since after all, you're a programmer, there's no reason for you to look at a newspaper.
Why would you admit fault, or acknowledge that you might not know everything (or even enough) about what you're trying to do here? There's ASM boilerplate to type!
>>821 This is cudder, the programming ricer extraordinaire. This is the same person who believes static compiling is bloat and 10kb of overhead in a binary is meaningful on today's computers.
Windows version will be single binary expected to be <1MB and usable on Win98SE up to (probably, won't test) 10.
So you're implying you will test on Windows 98 but NOT the current version of Windows? Fucking LOL, this is your brain on hormone replacement estrogen pills.
Name:
Cudder !cXCudderUE2016-03-04 9:04
>>823 I'm not touching Win10. I recommend others do the same.
>>824 What's the matter? Afraid that the Microsoft will help the police will find your child porn, sicko? Or maybe it is jihadi plans you are trying to hide. You will not escape the surveillance network forever!
Name:
Anonymous2016-03-05 3:21
The only version of Windows worth supporting is 7.
Name:
Anonymous2016-03-05 9:49
If you use 8 with an alternate start menu, it's better than 7.
Pirate both.
Name:
Anonymous2016-03-05 10:18
If you use Linux or FreeBSD, it's better than Windows.
The basic box types are inline, block, and inline-block. Why is there no block-inline?
Name:
Anonymous2016-03-09 4:25
>>840 The application is unordered. It's like a partial derivative in that sense.
Name:
Anonymous2016-03-10 4:24
Can someone tell me what this thread is about? I've been seeing it on the front page since it was created but it always seemed boring so I never read it, and now it's so long that I can't be bothered reading the whole thing. Just a quick summary with bullets for key points and pivotal moments will do. Thanks.
Cudder is dicking around with weak text processing but hasn't demonstrated anything yet.
FTFY
Name:
Anonymous2016-03-11 10:33
Why do you hate elf cudder? How's PE better?
Name:
Cudder !cXCudderUE2016-03-11 12:12
I'm currently busy with other things.
>>847 The prominent design-by-committee infestation throughout the standard, the fact that it tries to be an object and executable format, and the seriously-fucked-up dynamic linking system.
Also it's basically impossible to get the normal GNU tools to produce a good single-section ELF with all the shit stripped out, whereas MS' linker will easily do that for a PE.
Over 2K lines of C spread across half a dozen files just to implement an HTML tokeniser!? Mine is less than 768 lines of x86 Asm, in one file. What sort of - dogmatic - insanity causes someone to turn a reasonably simple state machine that would most sanely be implemented as a single switch into a bloody mess of several dozen functions with massive code duplication? This is like copy-paste coding taken to the next level. A lot of what I wrote about Hubbub (NetSurf)'s tokeniser in >>549 applies to this abomination too, including the several-dozen-character-long variable names, horrificly duplicated EOF checking every-fucking-where, and allocating (and freeing) on every goddamn token the thing processes.
The most amusing part is there is not a single switch statement anywhere!!!
This level of bloatyness is only slightly reasonable if he was being paid per line of code.
Name:
Anonymous2016-03-12 21:34
>>850 Why the fuck can't people comment their goddamn code? All the naming is around internal conventions, and who knows what the fuck if((qnode->begin - 2) > tmp_begin) or whatever is actually testing for without reverse engineering the entire fucking thing.
Also, Cudder, you haven't shown your 768 lines, so we have no clue if it actually works, or how slow it is. Duplication of code like EOF checking and avoiding inner-loop switch cases tend to speed things up. Larger code is VERY often faster, if it's larger because it knows the exact cases coming up and does custom handling for each.
You waffle around with such vague ideas of "bloat", like a nigger waffles around with concepts in a math class.
You obviously don't know what a cache is. Loop unrolling and similar bloating "optimisations" are dead, they died a decade ago along with RISC, ultra-high clock speeds, and long pipelines.
I have posted benchmarks above in >>131. The tokeniser takes around 20 clock cycles per input byte on average and that's including all the processing to determine tags and attributes. There is no fucking way his tokeniser can do better than that - the overhead of all the unnecessary instructions introduced by manually keeping track of state and calling functions (through a pretty unpredictable indirect call) and accessing and allocating memory when it doesn't need to is going to slow things down significantly. Looking at the benchmark you can see the slowest part is the tree construction, which is - currently - in C, and does do the stupid one-function-per-state thing, but that's just because I wanted to quickly get something working, and never got around to rewriting it better/examining the spec more closely to find what could be simplified.
Name:
Anonymous2016-03-13 3:22
>>852 Stop thinking tiny, like a tiny brained fuck.
Consider a system with a caching filesystem, compared to one without. The caching one is larger, both in code and memory footprint, but is going to be hella faster than any simple disk access code that hits the drive every time.
Consider a JIT compiler, versus a bytecode interpreter. Which one is "bigger" and "bloated", and which do you think run faster?
Consider any system with actual brains in it, be it predictive analysis and heuristics, or just something which has been hardcoded & optimized for AOT measured slow paths.
And that's not even getting into tons and tons of benefits of larger architectures for being able to configure, debug, and instrument what the fuck is going on in your computer, instead of your shitty opaque asm code.
You are clueless and bring no value to the world, defending your absolute shit to the very end. I hate hearing your ignorant, anti-reality blather. Not just this, but every single word you've said. Kill yourself.
The only thing impressive about the JVM is how much memory and CPU it uses. It only exists to help sell hugely overpriced Enterprise Quality™ hardware.
>>856 It took SunOracle over two decades to get Java even slightly approaching what could be considered reasonable efficiency. And it's still a ridiculously bloated pig.
>>859 The disgustingly long variable names, excessive use of typedefs, "== NULL", and general idiocy of dynamically allocating an array which will be filled completely with constants in every fucking parser object strongly reeks of Enterprise Java-ism.
>>861 Here's something to cheer you up, the tag name processing in my tokeniser:
; found '<', what comes next? call [ebp+htmlp.func_getchar] ; EOF - emit text eof_emittext1: call isalpha jc not_alpha tag_name: call emit_text ; emit this text lea eax, [esi-1] mov [ebp+htmlp.data_ptr], eax ; start of tag name push 1 pop [ebp+htmlp.data_len] mov [ebp+htmlp.n_attrs], 0 tag_name_loop: call [ebp+htmlp.func_getchar] ; EOF - ignore call chk_tag_end_iswhs jz find_attr_loop inc dword ptr [ebp+htmlp.data_len] jmp tag_name_loop
Those 14 instructions (and the procs it calls) are essentially all that's needed to detect and process a tag name. The spec and the monster posted above need substantially more to do the same thing. The jumps to code you can't see are the state transitions directly. None of that mh_state_set (try to find in which of those files it's defined and how many levels of indirection there are, then facepalm when you see what it actually does), returning from a function, then going through an indirect call maybe back into the same damn function bullshit.
Name:
Anonymous2016-03-13 17:27
>>862 Are you seriously saying you'd write HTML parser in assembly?
CSS parsing. The way the spec is written makes it seem like you have to extract the whole series of tokens for the selector before parsing them separately, when all that's needed is to parse the selectors at the same time as everything else, as they come from the tokeniser. I wonder how many implementations out there needlessly allocate a secondary array of tokens (or allocate tokens, for that matter) just so it can rescan them to parse selectors...
It's also funny to see developers chasing the parallelism dream with things like Servo that have only demonstrated at best 2-3x speedup with multiple cores and even more complex code, when I can probably get 10x speedup with simple, single-threaded Asm that's at least an order of magnitude smaller. The CSS matching is also easily parallelisable if I really want to.
Boss, I've just obliterated the number of instructions and allocations in our CSS selector parser!
Great, what's the speedup gain?
It runs in a thousandth of the time for simple selectors!
I mean when loading our test pages.
Well, time spent parsing CSS is already dwarfed by network and graphical operations, and I haven't done most of the spec yet, so not that much. Like a fraction of a percent.
>>872 Get The Fuck Out of my /prog/ you corporate drone. We are artists. Not greedy intellectually dead whores who care only about money and increasing the number of bullets we can write on word document formatted resumes.
Name:
Anonymous2016-03-19 9:38
>>874 I second that. Programming is the art, coding is the job. And I sure haven't seen this board called /coding/.
Name:
Anonymous2016-03-19 11:28
>>874 If you followed the thread, Cudder is writing this browser as part of shim's job.
>>875 Coding is merely the act of writing code down. Programming is making computers do things, usually via coding. Development is producing a software piece. To make a house-building analogy: Coding is hammering, programming is building, and development is, well, development.
If you followed the thread, Cudder is writing this browser as part of shim's job.
You are wrong.
Programming is making computers do things, usually via coding
No. Programming in conjuring the spirits of the computer with our spells. Nothing more and nothing less. All other things within the software world are irrelevant, a waste of one's time, and intellect.
>>879 How's progress on CSS parser, tokeniser and box generation? I want to see you get into layout development already and pass the freaking Acid2 test. Show those bastards, Cudder!
>>878 Someone had to write the browser you use to shitpost. Hardly conjuring spirits, as this thread has shown. If that isn't programming though, what is it?
Name:
Anonymous2016-03-26 20:15
>>882 It counjures the spirits that fetch information from an international network and display them on a monitor. Turning a dead stone into a scrying window that can show anything on Earth is a feat Mediaeval magicians could only dream of.
Name:
Anonymous2016-03-26 20:55
>>882 It's hardly complicated to send a post request to a server.
Name:
Cudder !cXCudderUE2016-03-27 23:27
>>880 Looking at CSS tokeniser+parser. I've set aside box generation and rendering for now since there's no use in doing that without having a way of actually consuming CSS.
There's an odd '||' operator which I can't find anywhere else in the spec:
So it's completely fucking useless unless you're a circlejerking academic steeped in that LL/LR/etc. bullshit, and I've carefully read every single word of the CSS3 selectors spec without finding a single mention of it. It only has ~=, |=, ^=, $=, and *=. THANK YOU W3C FOR MAKING STUPID IMPLEMENTATIONS MORE INEFFICIENT! :facepalm:
Why is firefucks so bloated? Recently they removed the tab groups however they added the "web developer" tools including a "WebIDE" even though firebug exists for a long time. Remember the mozilla suite? Wasn't the reason they dropped it due to the bloat? In that case, why did they do the same with firefox? What do I need firefox hello and firefox pocket for?
I already got bitten by a stupid design decision in >>133. Also consider that other browsers already have a lot of (complex) optimisations because of how old they are, so if I want to compete I can't not optimise. These optimisations I'm doing actually simplify the code, so there's another benefit -- I take less time writing it and reading it in the future.
>>894,896 You don't need 64 bits if most of them are going to be zero. 64-bit pointers with around half their bits 0 make me want to facepalm every time I see them. Besides, amd64 is a fucking mess of RISC-ism and 8 registers is enough for a lot of things if you use them well. Compilers are just retardedly stupid at register allocation. (Just look at the dismal performance of MIPS with 32 registers... More is not better, except in synthetic microbenchmarks.)
What do I need firefox hello and firefox pocket for?
>>905 32-bit is not going to last forever. I would be suprised if the next version of Windows even targets it, and a few versions after that, it won't even be supported any more.
>>908 You probably interact with 4-bit CPUs daily and don't know about it. Same for 8 and 16-bit.
32-bit binaries run fine on 64-bit Windows. No need to bloat things up if you don't have a requirement to use huge amounts of memory.
Name:
Anonymous2016-04-02 20:50
>>913 Isn't one major point of """avoiding bloat""" to run faster? 32-bit shit is slower in tons of <4GB cases due to limited number of registers.
Name:
Cudder !cXCudderUE2016-04-03 14:42
>>914 Only if you have a stupid compiler and/or programmer.
Microbenchmarks that are heavy on 64-bit arithmetics will obviously look better in 64-bit mode, but that's very unrepresentative of real code, particularly code that a browser might execute (lots of branches and 32-bit maths, plus memory addressing, all of which don't benefit at all from 64-bit mode and may be even worse because of the lower code density.)
Also, the 64-bit extension being poorly done, means even if there were things that would be better 64 bits at a time, there's no equivalent instruction to express what could be done in 32-bit mode. Where's the "cmp r64, imm64" for example? There's only "cmp r64, r/m64". Either you waste another register to hold the immediate and an instruction to put it there, or suck up an extra memory access. Bastards.
Name:
Anonymous2016-04-03 15:17
You don't want to release the code until it passes acid2, but what about a binary release? I'm really excited about your efficient browser, but you aren't giving us anything for now and I'm afraid it'll take a lot of time until you can get it to pass acid2 (or am I wrong?).
Thinking of "compiling" CSS to x86 instructions directly to make matching even faster and basically do away with any sort of data structure for the selectors since it'll just become a stream of instructions... apparently I'm not the only one who thought of doing this.
Cudder is all booster, no payload Cudder is all crown, no filling Cudder is all foam, no beer Cudder is all hammer, no nail Cudder is all hat and no cattle Cudder is all icing, no cake Cudder is all lime and salt, no tequila Cudder is all mouth and no trousers Cudder is all shot, no powder Cudder is all sizzle and no steak Cudder is all wax and no wick
>>930 Yes they did, they said Cudder would publish something.
Name:
Anonymous2016-04-04 20:21
>>934 Here's how the conversation went. ================================== ★ Cudder delivering his browser at 1001! ▲ Post 1001 does exist, actually. You just have to link to it specifically to see it. See the Crossposters threads on /lounge/. ★ No one said it didn't. ================================== Okay?
Name:
Anonymous2016-04-04 22:02
>>935 My joke was that Cudder will never deliver, thus the post he will deliver it in does not exist. I didn't work out well, so just never mind. I'm changing the subject. I love you, Cudder, 👭👭💑💑💑👺👺💆👄💋❤💙💚💛💓💜💔💕💖💟💞💝💘💗🐇🐰🐭🍭🍭🍦🍦🍧🍨🍨🍧🍬🍎🍌🍌🍌🍌🍌🍌🍌🍌🍌🍌🍥🍆🍆🍍🍍🌷🌷🌷🍓🍓🍓🌸🌸🌸🌹🌹🌹🌹🌋🌋🌋🗻🗻🗻💐💐💐💒💒💒💌💌💌💍💍💍💎💎👗👗👢👢👢🔰🔰💵💴💶💷💸🎃🎵🎵🎵🎼🎼🔥🔥💦💦💦👪👪👪👪👪👪👪👪👪👪👪👪👪👪👪👪, pleaze marry me!
Name:
Anonymous2016-04-04 22:16
Cudder is married to LAC!
Name:
Anonymous2016-04-05 4:56
Please do not bully Cudder-sama. I'm sure she is doing her best to create a releasable binary for us as we speak. We need to believe in her.
255 attributes per simple selector ([a1=v1][a2=v2]...[a255=v255]) 255 simple selectors per selector (#s1 + .s2 > .s3 #s4 ... s255) 4G selectors in total (theoretical limit, actually limited by memory available)
These limits should be sufficient for basically all the CSS out there... and if it's not, then fuck you. No page should ever have anywhere near that much CSS, and if you do you'll probably crash other browsers and deserve to have your page displayed unstyled.
>>950 Your are making for """more bloat""" because software has to try to get around your fucking bullshit limitations to actually work. There is no goddamn sensible reason for what you're doing, as computers are generating CSS and queries automatically and need room to work in.
>>958 Are there any sites (besides contrived limit-testing test cases) that come anywhere near those limits? How about showing some examples instead of spewing vague "generating CSS and queries automatically " bullshit? That's the sort of attitude that leads to insane ENTERPRISE solutions where 99% of the complexity is there just for 0.1% of the use cases.
There's no point in having more than 255 attributes per selector either, since HTML5 doesn't define that many. Look at the discussion about CSS property maps above - why use a data structure optimised for thousands or more elements and is dynamic-everything, even if it's "theoretically more efficient", if you will never put more than a dozen or maybe 100 at most in it? Premature generalisation. That's real bloat.
>>959 My analysis projects load the shit out of the HTML/CSS front-end with tons of auto-generated data and complex queries, and no I'm not going to show you internal commercial work.
Again, WHY IN THE FUCK ARE YOU AFRAID OF COMPUTERS DOING WORK? What sort of bullshit backwards universe do you live in? Make computers work so humans don't have to, you fucking cancerous boil!
>>960 Depth, not width. With is limited only by available memory. I've tested my DOM with a page containing 100M elements and it handled it just fine, whereas Firefox and Chrome crashed.
>>961 If you were exceeding those limits your pages wouldn't work in any other browser either.
WHY IN THE FUCK ARE YOU AFRAID OF COMPUTERS DOING WORK?
It's useless, wasted work. https://en.wikipedia.org/wiki/Muda_(Japanese_term) . Ever wonder why your software feels so slow and consumes so much memory and disk space? Your can blame your attitude and all the other programmers with the same attitude for that waste. Idiot.
>>965 No, sir/madam, you are the idiot. Software doesn't feel slow, and consumes pennies worth of memory and disk space. Where's the waste, you dipshit?
Fuck you if you're a poor nigger with a 386 trying to run modern software. Your problems aren't relevant in the world anymore.
I run large programs on my workstation, and I inevitably hit any limitation that fuckheads like you put in. Software that comes from "I want to write simple, stupid, fixed-array based BULLSHIT because I'm too FUCKING STUPID of a programmer to write COMPETENT software that can PERFORM UNDER SCALE" is broken, and comes from retarded brains like yourself who need to die.
I will fucking strangle you with my bare hands if I ever see you in person, you shitfucking asshole, because you are a direct enemy of computers not getting in my fucking way and doing ACTUAL WORK, not the fucking masturbatory uselessness you and your like shit upon the world.
Ooh, look at my japanime reference at how smart I think I am!
You don't even understand the concept of "waste". No money is being wasted, and no human time is being wasted, so this is absolutely nothing like the Toyota example.
Any system that's built as "waste-free" as possible will always be the most brittle way to build it. Would you like a hydroelectric dam built next to your house not to waste concrete, and be exactly the thickness which can withstand observed pressures? Any more would be wasteful, right?
It's the same thing with software. You make it not have "waste", and it falls on its face when you try to push it harder. While the rest of the word considers anti-fragility, you explicitly pursue anti-robustness, because robustness happens to use free computational resources.
Name:
Anonymous2016-04-20 12:22
>>967,968 Not happy with Cudder's approach? Write your own web-browser then and stop bullying.
Name:
Anonymous2016-04-20 12:34
>>968 You're asserting that k strategy [1] is always superior.
This is not always the case, it is environment dependent. In terms of parasitic factors (ie our whole consumerist race to exhaust resources [2]) is viable only as long there is enough resources. Sure that computing shifted from r to k, but there's also potential to shift back provided there is enough environmental pressure.
For example, costs of energy rising faster than moore's law, moore's law ceasing to apply, or post-pubble deflationary market ceasing to be the driver of moore's law altogether.
At that point we'll slowly revert back to r strategy, as that would be simply more optimal to succeed in the market.
Jesus christ, do you realize how difficult it is to write a browser? Do you realize how even more (quadratically) difficult this becomes when you anally ASM-ize every little thing?
I admire the ambition but only if you have a realistic plan to get there. I suggest you delete everything so far and start over with Lisp and C++.
Name:
Anonymous2016-04-20 19:42
>>974 Jesus christ, do you realize how difficult it is to render text markup with inline images?
Name:
Anonymous2016-04-20 21:15
>>974 You can see Cudder's roadmap on >>655,740 I'd say his asm approach isn't holding him back so far. Personally I'm pretty excited about the first release once Acid2 passes. But I'm afraid that's too far away...
Name:
Anonymous2016-04-20 21:16
>>970 My stacked i7-6700K system takes less electricity than my Commodore 64 used to. Your energy cost argument is invalid. There is no waste.
My cousin met Cudder at a party in London last year. They ended up fucking. He said it was totally sub-par. She got shit all over his dick, and violently queefed at the end.
Your perception has been distorted by so much exposure to ENTERPRISE QUALITY bloatshit that you don't even notice anymore what a fat lazy pig you are. The insane "but it's scalable" argument doesn't hold up, you're basically advocating for people to do the equivalent of getting in the car to drive 10 feet instead of walking; just because YOU usually have to travel 100 times farther doesn't mean it applies to everyone and it's a ridiculous waste to think it does.
Any system that's built as "waste-free" as possible will always be the most brittle way to build it. Would you like a hydroelectric dam built next to your house not to waste concrete, and be exactly the thickness which can withstand observed pressures? Any more would be wasteful, right?
They wouldn't use 10x, 100x, 1000x, or even more concrete either. You're basically arguing for "let's use ALL THE FUCKING CONCRETE IN THE WORLD and make it so thick that it becomes the only thing on the Earth." And "robustness"? More ENTERPRISE QUALITY bullshit. Fuck this insane architecture astronautism.
>>977 O RLY? Show proof. Numbers, not vague claims.
>>982 You shouldn't blame him, even microcontrollers now have enough leftover flash that most people don't notice that some abstraction alone eats up 1Kb+ of ROM, until they have to write some time-constrained routine.
Name:
Anonymous2016-04-21 13:11
JACKSON 985 GET
Name:
Anonymous2016-04-22 18:23
>>982 Alright, I have no idea what you do or don't do with computers. I have nothing to say against your incoherent ramblings. Go drink a gallon of bleach and make sure your corpse falls to rest on your shitty, power munching old piece of shit computer that can't run programs fast.
You even fail at /prog/, which would be funny if you weren't such an utter waste of life.
Name:
Anonymous2016-04-22 18:28
>>982 I'm surprise you never whine about hardware """bloat""". We've got billions of transistors in CPUs now, which include tons of rewrite registers and out of order processing, complex cache coherence, and all this bullshit taking space & power on a chip.
Shouldn't a simpler chip run faster and cheaper?
The answer is flat out NO. And the same is true for software.
Name:
Anonymous2016-04-23 0:01
>>987 Even ARM is adding all that shit to their CPUs, because they can't get competitively fast with their original Cudder-class designs.
Name:
Anonymous2016-04-23 9:47
>>987 CS freshmen should be forced to write x86 opcode decoder, or even better a simulator, to get the first hand experience on the sheer madness contained therein.
>>988 Calling ARM cudder class is somewhat unfair towards fine lads over at cambridge (try MIPS instead) - considering that the ARM ISA appears to be more or less sane as opposed to x86.
The issue with people like cudder is that they live in alternate reality, thinking that computers are the same 80386 from 30 years ago, and things like out of order, uops and caches are just lies meant to subvert their fragile world of denial.
>>987 A CPU is like a library that all software uses. It makes sense to put more functionality there if it reduces the overall size of the system, rather than duplicating it in every single place. Optimisations there also benefit everyone. Look at the OP and the thread title.
Complexity has to be applied at the right level of abstraction.
>>996 America is turning into a 3rd world country, soon there will be no more whites left and it will be just a Northern Mexico.
Name:
Anonymous2016-04-23 20:20
>>997 Whites have become the ultimate cucks. They don't reproduce themsleves thanks to the cancerous atheism meme. But they need humans to support their welfare states, so instead of creating new taxpayer by reproduction, they decided to import sandniggers to become new taxpayers without realizing/caring about the long term consequences.