Introducing AdGuard CoreLibs

Since the very beginning of AdGuard, every year we were doing more: more updates, more products, more features. And that translated into more people using AdGuard :). However, you may have noticed that in 2018 we were not as active with AdGuard updates as we usually are. We even had to postpone the long-awaited cloud sync feature. There is a good reason for that, and I am going to tell you more about it today.

The story starts long ago when we launched the very first AdGuard product — AdGuard for Windows. Being firstborn gives some advantages — it is still the most feature-rich and elaborate version of AdGuard. For instance, Mac and Android are still lacking the full userscripts support and the privacy-focused Stealth Mode module. This is a payback for the decision we made a few years ago when we started working on Mac and Android versions. Back then we faced a problem, the existing filtering engine used by AG for Windows, could not be simply used on other platforms. We wanted to release new AdGuard versions as soon as possible so we chose an easy way — simply port part of the existing code to other programming languages supported by these platforms.

This approach fulfilled its purpose, we were able to launch the new products within a tight time frame. However, it lead to a serious problem. Every change of the filtering engine needs to be done three times — in every ported version of the engine. At some point we felt like we could not stand it anymore, and we made a decision to solve it once and for all. More than a year ago we started developing the shiny new cross-platform filtering engine, codename "CoreLibs".

Migrating to CoreLibs can not be done in one fell swoop. We will be rolling it out slowly, platform by platform, and we will finish with it by the end of this year. Fortunately, a big part of the work is already done, and that's why I decided to finally tell you about CoreLibs. At the moment we are about to roll out the first fully integrated version of AdGuard for Android. Thanks to our beta testers who were brave enough to use the nightly version, we already fixed the most annoying bugs and will soon publish the first beta version.

You might want to ask why I am so excited about the whole thing, and why in the world I decided to postpone other cool features we were planning. I am ready to answer, and I'll give you a whole list of reasons.

1. Performance.

The first tests on Android show that the new engine is much faster. It consumes twice less CPU time while doing the same job. It won't be that easy to notice on desktop computers, but this is really important on mobile devices.

2. Features.

Finally, we will be able to easily provide the same features on every platform. For instance, expect AdGuard for Mac and Android to receive the full userscripts support and the Stealth Mode module after we finish with the AdGuard for Windows integration. We might also bring some of the AdGuard for Android features to the desktop version if you wish (let us know in the comments!).

3. Faster development.

Now that we don't need to spend time on developing the same things for three different platforms, we will be able to implement and introduce new features at a much higher rate.

When will it finally happen? Android version will be the forerunner. Expect the first beta version to arrive by the end of this month, and add a month more for beta testing. AdGuard for Mac will be the second product to be fully integrated. I expect the first beta to be released in August. And finally, the CoreLibs-integrated version of AdGuard for Windows will be ready by the end of fall.

Comments are powered by Disqus
by downloading the comments you agree the terms and policies of Disqus

Andrey Meshkov

Co-founder, team lead, ‘perpetuum mobile’ of AdGuard. The man who defines our mission, plans, development, and simply makes AdGuard what it is today.

Subscribe to AdGuard Blog

Get the latest posts delivered right to your inbox.

or subscribe via RSS with Feedly! *by clicking on “Subscribe” you accept the terms and conditions