<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom">
  <channel>
    <title>Blog on Ferret - The declarative data extraction language</title>
    <link>https://ferretlang.org/blog/</link>
    <description>Recent content in Blog on Ferret - The declarative data extraction language</description>
    <generator>Hugo</generator>
    <language>en-us</language>
    <lastBuildDate>Tue, 25 Aug 2026 00:00:00 +0000</lastBuildDate>
    <atom:link href="https://ferretlang.org/blog/index.xml" rel="self" type="application/rss+xml" />
    <item>
      <title>Ferret Comes to Visual Studio Code</title>
      <link>https://ferretlang.org/blog/new-vscode-extension/</link>
      <pubDate>Tue, 25 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://ferretlang.org/blog/new-vscode-extension/</guid>
      <description>&lt;p&gt;Hello, friends!&lt;/p&gt;&#xA;&lt;p&gt;I&amp;rsquo;m excited to finally share something we’ve been working toward for a while: the new official Ferret extension for Visual Studio Code is now available on the Visual Studio Marketplace.&lt;/p&gt;&#xA;&lt;p&gt;&lt;code&gt;Ferret for Visual Studio Code&lt;/code&gt; brings the Ferret development experience directly into the editor, backed by Ferret Daemon (&lt;code&gt;ferretd&lt;/code&gt;) and the same language tooling we’ve been building for Ferret v2.&lt;/p&gt;&#xA;&lt;h3 id=&#34;more-than-syntax-highlighting&#34;&gt;More than syntax highlighting&lt;/h3&gt;&#xA;&lt;p&gt;The old FQL extension provided the basics: syntax highlighting and language configuration. The new extension is a rather different beast.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ferret v2: Moving Beyond AQL</title>
      <link>https://ferretlang.org/blog/ferret-v2-language-evolution/</link>
      <pubDate>Thu, 13 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://ferretlang.org/blog/ferret-v2-language-evolution/</guid>
      <description>&lt;p&gt;One of the fun (and sometimes dangerous) parts of working on a language for a long time is that, at some point, it starts developing a personality of its own.&lt;/p&gt;&#xA;&lt;p&gt;You add a feature because you need it, another one because the previous feature made something else possible, and then one day you look at the language and realize that some of the conventions you started with don&amp;rsquo;t quite fit anymore.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Introducing the Ferret Module Registry</title>
      <link>https://ferretlang.org/blog/ferret-module-registry/</link>
      <pubDate>Mon, 10 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://ferretlang.org/blog/ferret-module-registry/</guid>
      <description>&lt;p&gt;Ferret now has a module Registry.&lt;/p&gt;&#xA;&lt;p&gt;Until now, modules could be published as Go packages, but there was no shared place to discover them, compare versions, check compatibility, or find their documentation. You needed to know that a module existed and where its source lived before you could use it.&lt;/p&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://ferretlang.org/registry/&#34;&gt;Ferret Registry&lt;/a&gt; gives modules a common home. It is the public catalog that people browse and that the Ferret CLI reads when searching for or installing modules.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Why Ferret Was Built as a Library First</title>
      <link>https://ferretlang.org/blog/ferret-v2-lib-first/</link>
      <pubDate>Wed, 05 Aug 2026 00:00:00 +0000</pubDate>
      <guid>https://ferretlang.org/blog/ferret-v2-lib-first/</guid>
      <description>&lt;p&gt;When people first discover Ferret, they usually encounter the command-line interface.&lt;/p&gt;&#xA;&lt;p&gt;They write a query, run it against a website or an API, inspect the results, and move on, and for many use cases, that’s all they need.&lt;/p&gt;&#xA;&lt;p&gt;But in reality, the CLI was never the center of the project. Ferret was built around a much simpler idea: make a declarative-first, expression-oriented language an embeddable library first, then build applications around it.&lt;/p&gt;</description>
    </item>
    <item>
      <title>New Website, New Docs, and the Road to Ferret v2</title>
      <link>https://ferretlang.org/blog/new-website/</link>
      <pubDate>Thu, 25 Jun 2026 00:00:00 +0000</pubDate>
      <guid>https://ferretlang.org/blog/new-website/</guid>
      <description>&lt;h2 id=&#34;new-website-new-docs-and-the-road-to-ferret-v2&#34;&gt;New Website, New Docs, and the Road to Ferret v2&lt;/h2&gt;&#xA;&lt;p&gt;Hello friends,&lt;/p&gt;&#xA;&lt;p&gt;You might have noticed that Ferret has a refreshed website and a new domain name. This is part of the ongoing work around Ferret v2, and the website is gradually becoming the main home for documentation, guides, and project updates.&lt;/p&gt;&#xA;&lt;p&gt;One of the main focuses right now is improving the docs. Ferret v2 brings a cleaner language model, new runtime concepts, better tooling, and a more structured ecosystem, so the documentation needs to explain not only the syntax, but also how the pieces fit together.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Inside Ferret v2: New Language Capabilities</title>
      <link>https://ferretlang.org/blog/ferret-v2-new-syntax/</link>
      <pubDate>Mon, 25 May 2026 00:00:00 +0000</pubDate>
      <guid>https://ferretlang.org/blog/ferret-v2-new-syntax/</guid>
      <description>&lt;p&gt;Hello friends,&lt;/p&gt;&#xA;&lt;p&gt;Today I want to talk about one of the most exciting parts of Ferret v2: new language capabilities that are now available directly in the syntax.&lt;/p&gt;&#xA;&lt;p&gt;Ferret v2 is not meant to be a completely different language. The goal is to preserve the original spirit of Ferret while making it a clearer declarative-first, expression-oriented embedded language for data automation: more expressive, more consistent, and easier to extend.&lt;/p&gt;&#xA;&lt;p&gt;The familiar Ferret style remains: small scripts, readable data flow, structured values, and extraction-focused operations. The new syntax is there to make those scripts clearer, not to make Ferret feel like a large general-purpose programming language.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Inside Ferret v2: The New Execution Model</title>
      <link>https://ferretlang.org/blog/ferret-v2-execution-model/</link>
      <pubDate>Wed, 08 Apr 2026 00:00:00 +0000</pubDate>
      <guid>https://ferretlang.org/blog/ferret-v2-execution-model/</guid>
      <description>&lt;p&gt;Hello friends!&lt;/p&gt;&#xA;&lt;p&gt;The &lt;a href=&#34;https://ferretlang.org/blog/ferret-v2-announcement/&#34;&gt;previous post&lt;/a&gt; covered why Ferret v2 exists - why a rewrite made sense, what changed philosophically, and why I decided it was time to move the project into a new chapter.&lt;/p&gt;&#xA;&lt;p&gt;This time I want to talk about something more concrete: execution.&lt;/p&gt;&#xA;&lt;p&gt;The new runtime isn&amp;rsquo;t just a faster version of the old one. It is the execution foundation for Ferret&amp;rsquo;s declarative-first, expression-oriented embedded language, and that change touches almost everything: performance, embeddability, tooling, future language features, and the kinds of optimizations Ferret can support.&lt;/p&gt;</description>
    </item>
    <item>
      <title>On the Road to Ferret v2</title>
      <link>https://ferretlang.org/blog/ferret-v2-announcement/</link>
      <pubDate>Thu, 26 Mar 2026 00:00:00 +0000</pubDate>
      <guid>https://ferretlang.org/blog/ferret-v2-announcement/</guid>
      <description>&lt;p&gt;Hello friends!&lt;/p&gt;&#xA;&lt;p&gt;Long time no see! I hope you all have been doing well, it&amp;rsquo;s been a while since my last post.&lt;/p&gt;&#xA;&lt;p&gt;Given the Ferret v2 alpha release, I thought it was a good time to share the journey toward a declarative-first, expression-oriented embedded language for data automation, the design choices we made, and what you can expect from this new version.&lt;/p&gt;&#xA;&lt;h2 id=&#34;how-we-got-here&#34;&gt;How We Got Here&lt;/h2&gt;&#xA;&lt;p&gt;When I first started working on Ferret, I didn’t have some grand plan. I also didn’t know much about parsers, compilers, or runtimes.&#xA;I just needed a solution to a very specific pain.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ferret v0.18.1</title>
      <link>https://ferretlang.org/blog/ferret-v0.18.1/</link>
      <pubDate>Wed, 07 May 2025 00:00:00 +0000</pubDate>
      <guid>https://ferretlang.org/blog/ferret-v0.18.1/</guid>
      <description>&lt;p&gt;Hello Ferret users!&lt;/p&gt;&#xA;&lt;p&gt;This is a small cleanup-focused release that modernizes the codebase and keeps things aligned with current Go best practices.&lt;/p&gt;&#xA;&lt;h1 id=&#34;whats-changed&#34;&gt;What’s changed&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Simplified formatting code by using fmt.Printf instead of nested fmt.Println(fmt.Sprintf(&amp;hellip;)) (#789)&lt;/li&gt;&#xA;&lt;li&gt;Updated ANTLR and other dependencies, and upgraded the Go version (#796)&lt;/li&gt;&#xA;&lt;li&gt;Removed deprecated io/ioutil usage as part of an internal refactor (#792)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;No functional changes in behavior, but the internals are now cleaner, more idiomatic, and future-proofed.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ferret v0.18.0</title>
      <link>https://ferretlang.org/blog/ferret-v0.18.0/</link>
      <pubDate>Tue, 28 Mar 2023 00:00:00 +0000</pubDate>
      <guid>https://ferretlang.org/blog/ferret-v0.18.0/</guid>
      <description>&lt;p&gt;Hello Ferret users!&lt;/p&gt;&#xA;&lt;p&gt;We are happy to announce the release of Ferret v0.18.0.&lt;/p&gt;&#xA;&lt;p&gt;A small but useful update with a mix of maintenance and a new utility function.&lt;/p&gt;&#xA;&lt;h1 id=&#34;whats-new&#34;&gt;What’s new&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Updated project dependencies&lt;/li&gt;&#xA;&lt;li&gt;Added the TO_BINARY function (#775)&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;This release keeps things fresh under the hood while introducing a handy new helper for working with binary data.&lt;/p&gt;&#xA;&lt;p&gt;As always, thanks to everyone contributing and reporting issues.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ferret v0.17.0</title>
      <link>https://ferretlang.org/blog/ferret-v0.17.0/</link>
      <pubDate>Tue, 07 Feb 2023 00:00:00 +0000</pubDate>
      <guid>https://ferretlang.org/blog/ferret-v0.17.0/</guid>
      <description>&lt;p&gt;Hello Ferret users!&lt;/p&gt;&#xA;&lt;p&gt;We are happy to announce the release of Ferret v0.17.0.&lt;/p&gt;&#xA;&lt;p&gt;This release focuses on housekeeping and tooling improvements, tightening up the build and modernizing the dependency stack.&lt;/p&gt;&#xA;&lt;h1 id=&#34;changes&#34;&gt;Changes&lt;/h1&gt;&#xA;&lt;ul&gt;&#xA;&lt;li&gt;Updated project dependencies (#769)&lt;/li&gt;&#xA;&lt;li&gt;Dropped support for pre-generics versions of Go&lt;/li&gt;&#xA;&lt;li&gt;Updated ANTLR and removed the legacy SDK&lt;/li&gt;&#xA;&lt;li&gt;Added staticcheck and goimports to the toolchain&lt;/li&gt;&#xA;&lt;li&gt;Updated build steps to reflect the new setup&lt;/li&gt;&#xA;&lt;li&gt;Fixed unit tests for HTTP helper functions&lt;/li&gt;&#xA;&lt;/ul&gt;&#xA;&lt;p&gt;While there are no user-facing features in this release, 0.17.0 lays important groundwork for future development by improving correctness, maintainability, and build consistency.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ferret v0.16.0</title>
      <link>https://ferretlang.org/blog/ferret-v0.16.0/</link>
      <pubDate>Mon, 22 Nov 2021 00:00:00 +0000</pubDate>
      <guid>https://ferretlang.org/blog/ferret-v0.16.0/</guid>
      <description>&lt;p&gt;Hello friends,&lt;/p&gt;&#xA;&lt;p&gt;We hope everyone is healthy, happy, and ready for winter :)&lt;/p&gt;&#xA;&lt;p&gt;Our team is back from the break and excited to announce a new Ferret release!&lt;/p&gt;&#xA;&lt;p&gt;Ferret v0.16.0 is here and now it&amp;rsquo;s more stable, flexible, and faster!&lt;/p&gt;&#xA;&lt;p&gt;As always, CLI can be found &lt;a href=&#34;https://github.com/MontFerret/cli/releases/tag/v1.2.0&#34;&gt;here&lt;/a&gt; and the runtime itself &lt;a href=&#34;https://github.com/MontFerret/ferret/releases/tag/v0.16.0&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s dive in and see what we&amp;rsquo;ve got!&lt;/p&gt;&#xA;&lt;h1 id=&#34;whats-new&#34;&gt;What&amp;rsquo;s new&lt;/h1&gt;&#xA;&lt;p&gt;In this release, besides internal optimizations, we&amp;rsquo;ve focused on new language syntax and order to&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ferret v0.15.0</title>
      <link>https://ferretlang.org/blog/ferret-v0.15.0/</link>
      <pubDate>Sun, 25 Apr 2021 00:00:00 +0000</pubDate>
      <guid>https://ferretlang.org/blog/ferret-v0.15.0/</guid>
      <description>&lt;p&gt;Hello friends,&lt;/p&gt;&#xA;&lt;p&gt;Ferret v0.15.0 is out. This release is more focused on bug fixes and API improvements.&lt;/p&gt;&#xA;&lt;p&gt;Since the runtime and CLI have been splitted into 2 different repositories, you can find CLI binaries &lt;a href=&#34;https://github.com/MontFerret/cli/releases/tag/v1.1.0&#34;&gt;here&lt;/a&gt; which was upgraded to v1.1.0.&lt;/p&gt;&#xA;&lt;h1 id=&#34;whats-added&#34;&gt;What&amp;rsquo;s added&lt;/h1&gt;&#xA;&lt;h2 id=&#34;support-of-document-charset-in-http-driver&#34;&gt;Support of document charset in HTTP driver&lt;/h2&gt;&#xA;&lt;p&gt;If your target page does not contain information if its content encoding and it is other than &lt;code&gt;utf-8&lt;/code&gt;, you can help &lt;code&gt;http&lt;/code&gt; driver to properly convert the page content into &lt;code&gt;utf-8&lt;/code&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Say &#39;Hello&#39; to new CLI</title>
      <link>https://ferretlang.org/blog/say-hello-to-new-cli/</link>
      <pubDate>Thu, 22 Apr 2021 00:00:00 +0000</pubDate>
      <guid>https://ferretlang.org/blog/say-hello-to-new-cli/</guid>
      <description>&lt;p&gt;Hello fellas,&lt;/p&gt;&#xA;&lt;p&gt;We are happy to announce that we finally have a brand &lt;a href=&#34;https://github.com/MontFerret/cli&#34;&gt;new Ferret CLI&lt;/a&gt;!&lt;/p&gt;&#xA;&lt;figure class=&#34;image&#34;&gt;&lt;img src=&#34;https://ferretlang.org/blog/say-hello-to-new-cli/images/cli-logo.svg&#34; style=&#34;width: 256px; height: 256px&#34;&gt;&lt;/figure&gt;&#xA;&lt;p&gt;As the project grows, it became clear that we need to separate Ferret Runtime and CLI, to let the projects evolve on their own.&lt;/p&gt;&#xA;&lt;p&gt;The separation allowed us to review what we need from CLI and rebuild it from the ground up.&lt;/p&gt;&#xA;&lt;p&gt;Thus, let&amp;rsquo;s dive in and see what&amp;rsquo;s in there.&lt;/p&gt;&#xA;&lt;h1 id=&#34;get-started&#34;&gt;Get started&lt;/h1&gt;&#xA;&lt;p&gt;First of all, we need to install it:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ferret v0.14.0</title>
      <link>https://ferretlang.org/blog/ferret-v0.14.0/</link>
      <pubDate>Sat, 06 Mar 2021 00:00:00 +0000</pubDate>
      <guid>https://ferretlang.org/blog/ferret-v0.14.0/</guid>
      <description>&lt;p&gt;Hello friends,&lt;/p&gt;&#xA;&lt;p&gt;Belated happy new 2021 year! Hope things will be better and we can finally get back to normal life.&lt;/p&gt;&#xA;&lt;p&gt;Meanwhile, in between of work, personal lives and anxiety, we&amp;rsquo;ve managed to bring you some great features with a new release of Ferret - &lt;strong&gt;&lt;a href=&#34;https://github.com/MontFerret/ferret/releases/tag/v0.14.0&#34;&gt;Ferret v0.14.0&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;This release contains some syntax updates, DOM API fixes and extra flexibility. Let&amp;rsquo;s dive in!&lt;/p&gt;&#xA;&lt;h1 id=&#34;whats-added&#34;&gt;What&amp;rsquo;s added&lt;/h1&gt;&#xA;&lt;h2 id=&#34;support-of-history-api&#34;&gt;Support of History API&lt;/h2&gt;&#xA;&lt;p&gt;Before v0.14.0, Page object from the CDP driver, would only return the url that was set during &lt;strong&gt;full&lt;/strong&gt; page load or redirect but ignored all &lt;strong&gt;in page&lt;/strong&gt; navigation using History API (e.g. using &lt;code&gt;react-router&lt;/code&gt;).&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ferret v0.13.0</title>
      <link>https://ferretlang.org/blog/ferret-v0.13.0/</link>
      <pubDate>Tue, 24 Nov 2020 00:00:00 +0000</pubDate>
      <guid>https://ferretlang.org/blog/ferret-v0.13.0/</guid>
      <description>&lt;p&gt;Hello friends,&lt;/p&gt;&#xA;&lt;p&gt;We are excited to announce a new Ferret release - &lt;strong&gt;&lt;a href=&#34;https://github.com/MontFerret/ferret/releases/tag/v0.13.0&#34;&gt;Ferret v0.13.0&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;This release brings new syntax, DOM API updates and some bug fixes. Let&amp;rsquo;s dive in!&lt;/p&gt;&#xA;&lt;h1 id=&#34;whats-added&#34;&gt;What&amp;rsquo;s added&lt;/h1&gt;&#xA;&lt;h2 id=&#34;while-loop&#34;&gt;While loop&lt;/h2&gt;&#xA;&lt;p&gt;Finally! While loops have landed FQL!&lt;/p&gt;&#xA;&lt;p&gt;Ferret query language inherently lacked while loops due to its origin from ArangoDB query language. But over time, it&amp;rsquo;s become obvious that this kind of looping is essential for data scraping.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Say &#39;Hello&#39; to Lab</title>
      <link>https://ferretlang.org/blog/say-hello-to-lab/</link>
      <pubDate>Mon, 09 Nov 2020 00:00:00 +0000</pubDate>
      <guid>https://ferretlang.org/blog/say-hello-to-lab/</guid>
      <description>&lt;figure class=&#34;image&#34;&gt;&lt;img src=&#34;https://ferretlang.org/blog/say-hello-to-lab/images/lab-logo.png&#34; style=&#34;width: 256px; height: 256px&#34;&gt;&lt;/figure&gt;&#xA;&lt;p&gt;Hello friends,&lt;/p&gt;&#xA;&lt;p&gt;Our team is excited to announce a new tool in our ecosystem - &lt;a href=&#34;https://github.com/MontFerret/lab&#34;&gt;The Lab&lt;/a&gt;!&lt;/p&gt;&#xA;&lt;p&gt;The Lab is a test runner for Ferret that helps you to test how your scripts retrieve data or validate web UI.&lt;/p&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s see how it works!&lt;/p&gt;&#xA;&lt;h2 id=&#34;get-started&#34;&gt;Get started&lt;/h2&gt;&#xA;&lt;p&gt;The Lab can be installed either by downloading a &lt;a href=&#34;https://github.com/MontFerret/lab/releases&#34;&gt;binary&lt;/a&gt; or pulling a Docker image:&lt;/p&gt;&#xA;&lt;div class=&#34;highlight&#34;&gt;&lt;pre tabindex=&#34;0&#34; style=&#34;color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;-webkit-text-size-adjust:none;&#34;&gt;&lt;code class=&#34;language-bash&#34; data-lang=&#34;bash&#34;&gt;&lt;span style=&#34;display:flex;&#34;&gt;&lt;span&gt;$ docker pull montferret/lab&#xA;&lt;/span&gt;&lt;/span&gt;&lt;/code&gt;&lt;/pre&gt;&lt;/div&gt;&lt;p&gt;If you are macOS/Linux user, you can install the latest binary with the shell script:&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ferret v0.12.0</title>
      <link>https://ferretlang.org/blog/ferret-v0.12.0/</link>
      <pubDate>Mon, 14 Sep 2020 00:00:00 +0000</pubDate>
      <guid>https://ferretlang.org/blog/ferret-v0.12.0/</guid>
      <description>&lt;p&gt;Hello fellow miners,&lt;/p&gt;&#xA;&lt;p&gt;We are happy to announce a new Ferret release - &lt;strong&gt;&lt;a href=&#34;https://github.com/MontFerret/ferret/releases/tag/v0.12.0&#34;&gt;Ferret v0.12.0&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;This release has a new useful module in the standard library - testing!&lt;br&gt;&#xA;Let&amp;rsquo;s dig in. The full changelog you can find &lt;a href=&#34;https://github.com/MontFerret/ferret/blob/master/CHANGELOG.md#0120&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;h1 id=&#34;whats-added&#34;&gt;What&amp;rsquo;s added&lt;/h1&gt;&#xA;&lt;h2 id=&#34;assertion-library&#34;&gt;Assertion library&lt;/h2&gt;&#xA;&lt;p&gt;A new &lt;code&gt;T&lt;/code&gt; namespace has been added to the standard library that provides some helpful methods for making assertions.  &lt;br&gt;&#xA;The functions can be used to test UI, validate data and ensure the correctnes of a script.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ferret v0.11.1</title>
      <link>https://ferretlang.org/blog/ferret-v0.11.1/</link>
      <pubDate>Wed, 27 May 2020 00:00:00 +0000</pubDate>
      <guid>https://ferretlang.org/blog/ferret-v0.11.1/</guid>
      <description>&lt;p&gt;Hello fellow miners,&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;https://github.com/MontFerret/ferret/releases/tag/v0.11.1&#34;&gt;Ferret v0.11.1&lt;/a&gt;&lt;/strong&gt; has been released with a hotfix that solves an error in some functions that do screen positioning using scrolling.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ferret v0.11.0</title>
      <link>https://ferretlang.org/blog/ferret-v0.11.0/</link>
      <pubDate>Thu, 21 May 2020 00:00:00 +0000</pubDate>
      <guid>https://ferretlang.org/blog/ferret-v0.11.0/</guid>
      <description>&lt;p&gt;Hello fellow miners,&lt;/p&gt;&#xA;&lt;p&gt;Today, we are living in unprecedented times. There are almost 5 million people infected by COVID-19 and thousands die every day in the world.&lt;/p&gt;&#xA;&lt;p&gt;During this time, the highest priority is to stay safe and healthy, take care of family.&lt;/p&gt;&#xA;&lt;hr&gt;&#xA;&lt;p&gt;Ferret team has been locked down in their homes with their families as everyone around the globe, but &lt;strong&gt;still&lt;/strong&gt; has managed to make new &lt;strong&gt;&lt;a href=&#34;https://github.com/MontFerret/ferret/releases/tag/v0.11.0&#34;&gt;Ferret v0.11.0&lt;/a&gt;&lt;/strong&gt; release!&lt;/p&gt;</description>
    </item>
    <item>
      <title>New release strategy</title>
      <link>https://ferretlang.org/blog/new-release-strategy/</link>
      <pubDate>Sun, 23 Feb 2020 00:00:00 +0000</pubDate>
      <guid>https://ferretlang.org/blog/new-release-strategy/</guid>
      <description>&lt;p&gt;Working on an open source project while you have a full time job sometimes is challenging. &lt;br&gt;&#xA;Especially, when you try to make every release full of new features and bug fixes.&lt;/p&gt;&#xA;&lt;p&gt;Recent Ferret releases have showed, that trying to bring many features at one time is very time consuming and frustrating for end users. Therefore, our team has decided to change our release strategy.&lt;/p&gt;&#xA;&lt;p&gt;In order to ship new releases more frequently, we are going to decrease amount of features and bug fixes per release. Ferret is more or less stable and featureful now, there are no reasons to wait too long.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ferret v0.10.0</title>
      <link>https://ferretlang.org/blog/ferret-v0.10.0/</link>
      <pubDate>Fri, 21 Feb 2020 00:00:00 +0000</pubDate>
      <guid>https://ferretlang.org/blog/ferret-v0.10.0/</guid>
      <description>&lt;p&gt;Hello fellow miners, &lt;strong&gt;&lt;a href=&#34;https://github.com/MontFerret/ferret/releases/tag/v0.10.0&#34;&gt;Ferret v0.10.0&lt;/a&gt;&lt;/strong&gt; has been &lt;strong&gt;finally&lt;/strong&gt; released!&lt;/p&gt;&#xA;&lt;p&gt;It&amp;rsquo;s been long and busy 6 months since the last release and many of you might thought that the project got abandoned. &lt;br&gt;&#xA;We assure you it&amp;rsquo;s not! But sometimes life happens and slows you down.&lt;/p&gt;&#xA;&lt;p&gt;But we are back and ready to rock!&lt;/p&gt;&#xA;&lt;p&gt;This release has many great features and improvements thank to all our contributors. &lt;br&gt;&#xA;Let&amp;rsquo;s take a look at the most important ones. The full changelog you can find &lt;a href=&#34;https://github.com/MontFerret/ferret/blob/master/CHANGELOG.md#0100&#34;&gt;here&lt;/a&gt;.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ferret v0.9</title>
      <link>https://ferretlang.org/blog/ferret-v0.9/</link>
      <pubDate>Sun, 08 Sep 2019 00:00:00 +0000</pubDate>
      <guid>https://ferretlang.org/blog/ferret-v0.9/</guid>
      <description>&lt;p&gt;Hello fellow miners, &lt;strong&gt;&lt;a href=&#34;https://github.com/MontFerret/ferret/releases/tag/v0.9.0&#34;&gt;Ferret v0.9&lt;/a&gt;&lt;/strong&gt; has been released!&lt;/p&gt;&#xA;&lt;p&gt;In this release, we mostly focused on bug fixes and filling gaps in user interaction functionality.&lt;/p&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s see what we&amp;rsquo;ve got.&lt;/p&gt;&#xA;&lt;h1 id=&#34;whats-added&#34;&gt;What&amp;rsquo;s added&lt;/h1&gt;&#xA;&lt;h2 id=&#34;clearing-input-values&#34;&gt;Clearing input values&lt;/h2&gt;&#xA;&lt;p&gt;Since early versions, Ferret has &lt;code&gt;INPUT&lt;/code&gt; HTML function that allowed to type any value to input HTML element.&#xA;This works by appending the function parameter to any pre-existing &lt;code&gt;&amp;lt;input&amp;gt;&lt;/code&gt; value. While it works fine in many cases, there are some scenarios when a target input field has a preset value which needs to be erased. With this release, Ferret has a new method &lt;code&gt;INPUT_CLEAR&lt;/code&gt; that erases any data from a target input.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ferret v0.8.2</title>
      <link>https://ferretlang.org/blog/ferret-v0.8.2/</link>
      <pubDate>Mon, 05 Aug 2019 00:00:00 +0000</pubDate>
      <guid>https://ferretlang.org/blog/ferret-v0.8.2/</guid>
      <description>&lt;p&gt;Another portion of hot fixes has arrived!&lt;/p&gt;&#xA;&lt;p&gt;&lt;strong&gt;&lt;a href=&#34;https://github.com/MontFerret/ferret/releases/tag/v0.8.2&#34;&gt;v0.8.2&lt;/a&gt;&lt;/strong&gt; release brings some critical fixes.&lt;/p&gt;&#xA;&lt;h2 id=&#34;scrolling-position-is-not-centered&#34;&gt;Scrolling position is not centered&lt;/h2&gt;&#xA;&lt;p&gt;In 0.8, we introduced a new behavior for all user interactions. Before any actions like clicking ot typing, we scroll into a target element making it visible in a viewport. But the logic behind it, positioned elements on the top of the viewport, which led to some issues on some websites due to their markup - the elements were still invisible because they were under other elements.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ferret v0.8.1</title>
      <link>https://ferretlang.org/blog/ferret-v0.8.1/</link>
      <pubDate>Fri, 26 Jul 2019 00:00:00 +0000</pubDate>
      <guid>https://ferretlang.org/blog/ferret-v0.8.1/</guid>
      <description>&lt;p&gt;With all big features, come small bugs. :)&lt;/p&gt;&#xA;&lt;p&gt;With this new &lt;strong&gt;&lt;a href=&#34;https://github.com/MontFerret/ferret/releases/tag/v0.8.1&#34;&gt;v0.8.1&lt;/a&gt;&lt;/strong&gt; release we are providing hot fixes for some of these small ones.&lt;/p&gt;&#xA;&lt;h2 id=&#34;broken-click-function&#34;&gt;Broken CLICK function&lt;/h2&gt;&#xA;&lt;p&gt;In 0.7 &lt;code&gt;CLICK&lt;/code&gt; and &lt;code&gt;CLICK_ALL&lt;/code&gt; functions were doing a check before clicking and was returning a boolean value indicating whether a target element was clicked.&#xA;In 0.8 this logic got broken due to internal refactorings and the check was not performed which led to broken scripts using this returned value.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Ferret v0.8</title>
      <link>https://ferretlang.org/blog/ferret-v0.8/</link>
      <pubDate>Tue, 23 Jul 2019 00:00:00 +0000</pubDate>
      <guid>https://ferretlang.org/blog/ferret-v0.8/</guid>
      <description>&lt;p&gt;Hooray, &lt;strong&gt;&lt;a href=&#34;https://github.com/MontFerret/ferret/releases/tag/v0.8.0&#34;&gt;Ferret v0.8&lt;/a&gt;&lt;/strong&gt; has been released!&lt;/p&gt;&#xA;&lt;p&gt;It&amp;rsquo;s been a while since the last release, but we worked hard to bring new and better Ferret. This release has many new exciting features, but unfortunately, there are also some breaking changes.&lt;/p&gt;&#xA;&lt;p&gt;You can find the full changelog &lt;strong&gt;&lt;a href=&#34;https://github.com/MontFerret/ferret/blob/master/CHANGELOG.md#080&#34;&gt;here&lt;/a&gt;&lt;/strong&gt;.&lt;/p&gt;&#xA;&lt;p&gt;Let&amp;rsquo;s go!&lt;/p&gt;&#xA;&lt;h1 id=&#34;whats-added&#34;&gt;What&amp;rsquo;s added&lt;/h1&gt;&#xA;&lt;h2 id=&#34;iframe&#34;&gt;iframe&lt;/h2&gt;&#xA;&lt;p&gt;Ferret &lt;em&gt;finally&lt;/em&gt; supports &lt;code&gt;iframe&lt;/code&gt; elements. &lt;br&gt;&#xA;When a page gets loaded, Ferret finds all available elements and provieds an access to them via the &lt;code&gt;.frames&lt;/code&gt; property of a page object.&lt;/p&gt;</description>
    </item>
    <item>
      <title>Say &#39;Hello&#39; to Ferret</title>
      <link>https://ferretlang.org/blog/say-hello-to-ferret/</link>
      <pubDate>Fri, 08 Feb 2019 00:00:00 +0000</pubDate>
      <guid>https://ferretlang.org/blog/say-hello-to-ferret/</guid>
      <description>&lt;p&gt;As a developer, you have probably written a web scraper at least once.&lt;/p&gt;&#xA;&lt;p&gt;Maybe you needed product prices from a few websites. Maybe you wanted to collect images for an AI experiment. Maybe you needed public data from a website that did not provide an API. Or maybe you just needed to turn a messy web page into a clean JSON file.&lt;/p&gt;&#xA;&lt;p&gt;At first, this usually feels simple.&lt;/p&gt;&#xA;&lt;p&gt;You pick a language, install a library, make an HTTP request, parse some HTML, extract a few fields, and move on.&lt;/p&gt;</description>
    </item>
  </channel>
</rss>
