Yandex Go Develops Custom DSL to Handle Complex Dynamic Ride Pricing Logic
Yandex Go has introduced a custom domain-specific language to manage the intricate logic behind calculating ride costs, replacing what would otherwise become an unmaintainable collection of conditional statements in the core service code.
Trip pricing at Yandex Go is far more complex than simple multiplication of distance and time. It incorporates geozones, real-time demand, discounts, toll roads, additional stops, and special requirements such as transporting a cat, bicycle, or skis. The same pricing engine is invoked not only when a ride is ordered but also when the route or payment method changes, when a trip ends, when support staff intervene, and when analysts verify data.
Pricing can be fixed, interval-based, or calculated by taximeter. To support this flexibility without constant redeployments, developers first gather parameters from multiple sources in parallel: tariff category, geozones, discounts, surge multipliers, and additional services. These dependencies form a graph executed asynchronously on userver, ensuring that failure of a non-critical source does not halt the entire calculation.
Previously the algorithm resided in C++, but because pricing rules change on average twice a week, frequent service updates became impractical. Redeploying the service across 50 pods takes approximately 40 minutes, and the growing set of dynamic configuration files would have turned the codebase into a museum of conditional statements.
Instead, Yandex created its own DSL featuring conditions, functions, immutable values, and fold operations in place of traditional loops. Rules are organized into sequential chains where each transformation receives the current price and parameters and returns a new result together with metadata. The language grammar is defined with ANTLR 4, and the Z3 theorem prover verifies that no program can generate an incorrect price.
As a result, changes to pricing logic no longer require service recompilation, erroneous versions can be rolled back instantly, and every calculation can be reproduced from input data and intermediate results. The pricing platform is already shared with Yandex Taxi, Delivery, and the electric-vehicle charging service.
Related articles
Corporate Boomerang: WordPress Founder Matt Mullenweg Survives Board Coup at Automattic
Automattic experienced a rapid corporate power struggle when its board placed founder and CEO Matt Mullenweg on forced paid leave. Within two days Mullenweg regained control by leveraging his shareholder voting rights and removed opposing administrators from the company Slack. The original board members who supported his ouster are now departing the company. The brief conflict highlighted how corporate governance rules allowed shareholders to ultimately determine board composition. Mullenweg described his restored position as that of a pirate before announcing renewed alignment with the board. Public support from WordPress leadership helped solidify his return to leadership.
Russian Transport Ministry Ready to Provide Regulatory Framework for Poplar Fluff Vacuum Robots
The Russian Ministry of Transport has signaled readiness to develop necessary regulations if municipal services express interest in specialized robots designed to collect poplar fluff from city streets. The statement from Minister Andrey Nikitin follows a viral meme that originated from a two-year-old video created by the agency Out Digital. Although no real machines called пухосос exist and no serial production has been launched, the fictional concept gained widespread attention after being presented as an actual Moscow development. The Department of Housing and Utilities in Moscow playfully expanded the joke by introducing additional fictional devices named Zasosyor, Musorozhor, and Gazonyukh. Linguistic experts at Gramota.ru later analyzed the newly coined term, further amplifying the meme's reach across Russian media and social networks. The minister emphasized that any future regulatory support would depend entirely on demand from communal services rather than proactive development by the ministry itself.
Context is Everything: How to Avoid Drowning in Security Incidents and Distinguish Employees from Attackers
The article explains that false positives in security systems often stem from missing business context rather than technical flaws. It outlines three levels of filtering that combine process rules, access logs, and job-specific behavior to rank risk accurately. Behavioral analysis tools like UEBA can help but require proper training and human oversight to avoid generating more noise. Key metrics focus on reducing false alerts, improving MTTD and MTTR, and minimizing daily administration time. For smaller companies without dedicated SOC teams, the guidance emphasizes starting with log collection, identifying existential risks, and aligning policies with real business processes. The piece stresses that technology alone cannot replace analysts who deeply understand company operations.
redb 4.0 Released: XML Routes, Lazy References, Unique Keys and WS-Trust Across the Ecosystem
The redb ecosystem has delivered a major simultaneous release across all core components, bringing redb.Core, redb.Route, redb.Tsak and redb.Identity to version 4.0.0. The update introduces declarative XML routing, lazy object references, unique key constraints, and a full WS-Trust SOAP facade while closing multiple security issues reported through external audits and community feedback. Seventy-six NuGet packages, seven container images and platform archives for Windows and Linux are now available, with the Pro edition remaining free and license-free throughout the 4.x line. Significant internal changes include a unified expression language, support for modern data formats such as Protobuf and Avro, and improved handling of distributed caches and OpenTelemetry metrics. Security hardening covers header sanitization in all identity facades, consent-page protections, dashboard access controls and a switch to bcrypt password hashing. Existing clusters must be stopped before upgrade because mixed versions are not supported, and large databases require a maintenance window for schema changes and partial index creation.