Skip to content
Michał Szmidt edited this page Mar 4, 2024 · 6 revisions
    __            __     __
   / /_   _____  / /_   / /
  / __ \ / ___/ / __/  / / 
 / / / // /__  / /_   / /  
/_/ /_/ \___/  \__/  /_/   

History

I collect hostlists from many sources for my dns. However, manipulating on > 10 lists is no fun. (In my case 60-80)

Especially that many of them are assembled from each other. This is especially irritating on weak devices like rpi that is commonly used for pi-hole/adguard services. I needed small cool tool written in non-script language to just preprocess my list for similar service.

I wrote a draft in Java (as I knew it has perfect stream interface for lazy and parallel processing). I had to make decision, use graalvm native-image to produce binary or find other language.

Native image is not available for FreeBSD, and making this tool more advanced could produce huge amount of Java oop bloat. So decided to proceed with golang. However go doesn't have inbuilt streams. After some tries with external implementations. I gave up. Then I found rust has perfect stream-like extensible interface called iterator.

So I rewrote current work in rust. Here is it!

Clone this wiki locally