r/vlang

▲ 15 r/vlang

Why Does V seem to have an adversarial attitude toward criticism

Modern V seems to have found a reasonable niche as something like a Crystal style language for people who prefer Go like ergonomics. I’m asking this with the understanding that there have been claims of people being banned for dissent or criticism.

I’m not arguing that no one should use V, nor am I saying it has no value simply because it overlaps with languages like Crystal, Nim, or Go. My question is more about why disputes over the language’s novelty and breadth of claims seem to become such a problem, especially now that V appears to have found its own practical space. Why be defensive at this point?

reddit.com
u/murkduck — 10 days ago
▲ 8 r/vlang+1 crossposts

Vebidor v5.0.0 — a V-native browser and mobile automation library (W3C WebDriver + BiDi + iOS/Android), no Node

I've been building vebidor, a browser/mobile automation library written entirely in V — think Selenium/Playwright/Appium, but as a native V module with no Node runtime and no bundled browser. v5.0.0 just added native mobile, so it now covers web and real-device automation from one API.

What it does

  • Web (W3C WebDriver Classic) — 100% Selenium feature parity, drives Edge/Chrome/Firefox/Safari.
  • Playwright-style ergonomics — lazy auto-waiting Locators, get_by_role/text/label/... selectors, web-first retrying assertions, one-call launch().
  • WebDriver-BiDi (the W3C bidirectional protocol over WebSocket) — network interception/mocking, HTTP auth, console/network events, isolated contexts, preload scripts, tracing.
  • Native mobile (new in v5.0.0) — vebidor.mobile drives WebDriverAgent (iOS) and the UiAutomator2 server (Android) directly over their HTTP sockets. Same backends Appium uses, minus the Node middleware. Cross-platform get_by_*, gestures, app lifecycle, device state.

​

import vebidor.webdriver


fn main() {
    mut b := webdriver.launch_edge(webdriver.LaunchOptions{ headless: true })!
    defer { b.close() }
    b.goto('https://example.com')!
    webdriver.expect(b.wd.get_by_role('heading', ''))!.to_be_visible()!
}

import vebidor.mobile


fn main() {
    mut s := mobile.launch_ios(mobile.IOSOptions{ mode: .simulator, udid: '...', wda_xctestrun: '...' })!
    defer { s.close() }
    s.get_by_label('General').tap()!
    mobile.expect(s.get_by_text('About')).to_be_visible()!
}

Why it exists

It's the only real automation option in V, and it's standards-based all the way down — W3C WebDriver + W3C BiDi for the web, and the public on-device servers for mobile. No Chromium-only CDP lock-in, no proprietary wire. Compiles to a native binary.

Honest about limitations

  • No binary trace viewer / video / codegen like Playwright (there's a JSON tracer).
  • No hybrid-app webview driving yet on mobile (Appium still wins there).
  • iOS real-device work needs a macOS host (code signing). Android works anywhere adb does.
  • BiDi can't dispatch real touch events — that's a protocol gap, not an impl gap.

Links

Built and verified live (headless Edge for web; iOS Simulator + Android Emulator for mobile). Feedback and issues very welcome — especially from anyone using V for scraping or end-to-end testing.

reddit.com
u/Usual-Complaint2581 — 11 days ago