Great to open source it. It’s a win win for all. But they get great support from the community with features that are actually useful and needed along with great pool of developers to maintain and keep contributing and most importantly adoption by everyone else.
pingora is the web components of load balancers now its extremely flexible and will allow engineers to finally make customized http proxy. The future of the web is really looking like its gonna be built with Rust.
super amazing; sadly we starting migrating to envoy 1 year ago; I'd love to get more insights/benchmark comparing this two! the extensability in envoy via WASM is nice; but sometimes a bit too non-transparent.
You really ought to try some multi-threaded code in rust, with mutexes and the like. I found it significantly easier to write that kind of code compared to the C equivalent.
What I'm seeing this being used for are cloud services that would create web-based configuration UI to configure your own proxy and the service would then build it and host it exactly the way you want.
Something else to know about nginx process model, nginx had to add an eBPF program to make sure their SO_REUSEPORT for QUIC would perform well. Might be an interesting topic. <a href="#" class="seekto" data-time="1440">24:00</a> this seems likely, i was thinking the same, it all depends on what people want/need and if they are already covered by what exists right now. But first we will see an explosion in specialized proxies based on this. <a href="#" class="seekto" data-time="1494">24:54</a> their are many HTTP-frameworks/libraries and some of them for example, I think some Python libraries, also support proxying.
I haven’t done much with rust or nodejs, but this makes me wonder if a rust interpreter or transpiler for js could be connected with these apis to make a very performant nodejs server replacement
My two cents. Rust doesn't exactly auto solve the mutex / semaphore problem. But the compiler doesn't allow you to access that connection/ memory unless you deal with these. As long as you can prove to the compiler that only one thread will be accessing the connection at any point in time, It'll allow you to compile. In other words, if compiler is allowing you to do it, it's most likely safe to do so.
This seems similar to netty and little toolkit known as vertx in the Java world. Although rust seems a nice language to implement such a thing mainly because of the guardrails imposed by the language in memory management and a lack of gc which may of may be not an issue with Java.
<a href="#" class="seekto" data-time="1350">22:30</a> According to my simple knowledge, Suckless tools work in this way. There are no configuration files. You customize the code in the way you want and with the features you want. If you do not want this feature, then it does not exist in reality for you.
Sure, proc macros make some wild stuff possible, but even then they are unfortunately pure dumpster fire compared to the C++ compile time facilities. Same, terrible debugging experience minus type information = even more awful to work with.
Someone please explain to me. Nginx does all that and is also open source. Then whats the difference between this and nginx (apart of the process vs thread thing)
There's barely any difference. And it probably won't do any. Nginx is more than enough for performant server. You will much more likely hit the limits with your backend bottlenecks.
There isn't really a debate at all that Rust is safer than C/C++, Rust forces you to write memory safe code by default, C/C++ does not. As none one can argue with the fact that most vulnerabilities stem form memory safety issues, there can be no debate that Rust forces you to write code, that is at least safer in this aspect. The only argument that people have against this that they can write perfectly safe code in C, which the majority of people cannot though as evidenced by the memory safety vulnerability stats.
Instead of bashing C, get better C developers. NGINX was developed in C for performance reasons. *Why sacrifice efficiency because of developer incompetence.*
nginx sucks, its architecture is crap. If you want to install a module you need to recompile, how dumb is that? Even as proxy sucks, it is slow, there are much better alternatives. It is an old piece of crap.