Web++: A C++ Web Framework
132 subscribers
440 photos
36 videos
20 files
177 links
Web++ Framework (A C++ web framework to ease the pain of web development)

Using modern C++20/23.
GitHub: https://github.com/the-moisrex/webpp

I've been working on this project since 2019...
Download Telegram
Implemented my own std::function alternative (which is allocator-aware) called istl::function and it's beating std::function's performance with the default std::allocator.

Read more about its performance here
✔️ SQL Query Builder tests are passing
✔️ istl::function tests are passing

1. Next steps are to write more tests for SQL Query Builder and then solve them of course so we can have a more stable SQL Database support system inside this.

2. After that, I might start working on a new, dynamic router. The current router is static and it's good but you probably can't use it inside a source file and thus that would mean your whole application essentially will have to be a big header-only executable. So a dynamic router is necessary.
I probably will use the recently made istl::function in there too.
Web++: A C++ Web Framework
Implemented my own std::function alternative (which is allocator-aware) called istl::function and it's beating std::function's performance with the default std::allocator. Read more about its performance here
Some of istl::function properties so far:

- allocator-aware
- Small stack size (alloc size + void*)
- no internal SOO, you can use stack_allocator instead
- beats std::function at benchmarks, and gets beaten by it at the same time
Live stream started
Live stream finished (1 minute)
Live stream started
Live stream finished (1 minute)
Live stream started
Live stream finished (1 hour)
Channel photo removed
Channel photo updated
It's fun getting blocked by someone who's trying to make a twitter bot that makes a list of people with different political views than you so you can block them all in one go, for saying that such tools will lead people into isolation and is a begging of radicalism.

I thought it's a good time to change the channel's photo for people who are not comfortable with the last one.

It's interesting how much people don't want to hear the opposite side fearing they might learn a thing or two along the way that'll have to change their minds about things they previously thought were facts!
⚙️ invocable_inorder, invoke_inorder Utilities:

Call your function, and pass the its arguments in any order or by omitting any number of them!

// define:
void callable(one, two, three);

// call it like this:
invoke_inorder(callable, three, one, two, four);


Source on compiler explorer
Source in project
We can totally replace "std::same_as" and "std::is_same_v" with this utility right here; and also "cvref_as" is probably more useful.

Instead of checking 2 types, you can check two ranges:

same_as_all<T..., U...>


Splits it in the middle, checks if both half are the same.

Code on Project's Github
Code on Compiler Explorer
🟢 sub_tuple implementation.

Here I needed to create a sub-tuple, so I implemented one that creates a sub-tuple.

Usages:
sub_tuple<1, 6>(tup)

or:
sub_tuple(tup, index_sequence<1, 3, 6>)


I have already implemented some utilities for making custom index_sequences based on conditions, ranges, or ...

Source code of this in the project
The tests for the new router is passing; there are a few things that need to be taken care of like manglers for example; but the general idea is done.
Today, I managed to remove the old static routing system from the library and replace it with the new valve system (the same thing, but implemented better).

I benchmarked them and the new system even though it was significantly simpler to implement, it was faster.

I guess I tried to do lots of premature optimizations when I started the library, don't be like me :)
We have a HeisenBug! It's a bug that only happens when the debugger is not watching 😅
Media is too big
VIEW IN TELEGRAM
It's been a while since I lasted did one of these In-Terminal-Timelapses, so here's me working on IP Address class which is a wrapper for variant<ipv4, ipv6>.

Does these timelapses actually inspire you or am I wasting my time here? What do you think?