Author Archives:
A new pkg.go.dev API for Go
Access to Go metadata has been an everpresent need for the Go community. Since its launch, pkg.go.dev has served as a central hub for Go package documentation and discovery. While we initially prioritized providing this comprehensive access via a web interface, the need for streamlined programmatic access has become increasingly clear.
Structured API access has been one of the most highly requested features for pkg.go.dev for a while now. Developers building tools, IDE integrations, automated workflows, and other systems have had to rely on inconsistent and fragile scraping methods. By providing a formal API, we can provide fast and efficient access to required data. This foundation also sets Go up for the future of AI-assisted coding. Large language models and agents can access the context necessary to reason about the Go ecosystem with greater precision and accuracy.
Empowering Tool Builders
Our goal with this API is to reduce the technical churn for builders and innovators. By offering structured JSON metadata, we address the following use cases:
- Search and Discovery: The API enables fast and efficient search across the entire Go module ecosystem.
- Driving AI Innovation: As AI-assisted coding evolves, LLMs and agents need precise context. This API provides the data required for agents and models to reason deterministically about Go packages.
The Service Interface
Built for stability and efficient caching, the API uses a stateless, GET-only architecture. Primary endpoints are currently hosted under the v1beta path. Following a period of feedback from the Go community and confirmed stability, we intend to transition toward a formal v1 release.
For a complete interactive reference of all endpoints, query parameters, and response shapes, see pkg.go.dev/api. The machine-readable API contract is also published directly at pkg.go.dev/v1beta/openapi.yaml.
| Endpoint | Description |
/v1beta/imported-by/{path}
|
Paths of packages importing the package at {path}.
|
/v1beta/module/{path}
|
Information about the module at {path}.
|
/v1beta/package/{path}
|
Information about the package at {path}.
|
/v1beta/packages/{path}
|
Information about packages of the module at {path}.
|
/v1beta/search/search?q={query}
|
Search results for a given query. |
/v1beta/symbols/{path}
|
List of symbols declared by the package at {path}.
|
/v1beta/versions/{path}
|
Versions of the module at {path}.
|
/v1beta/vulns/{path}
|
Vulnerabilities of the module or package at {path}.
|
An example of retrieving package information is shown below:
curl https://pkg.go.dev/v1beta/package/github.com/google/go-cmp/cmp | jq
{
"modulePath": "github.com/google/go-cmp",
"version": "v0.7.0",
"isLatest": true,
"isStandardLibrary": false,
"goos": "all",
"goarch": "all",
"path": "github.com/google/go-cmp/cmp",
"name": "cmp",
"synopsis": "Package cmp determines equality of values.",
"isRedistributable": true
}
A Reference Implementation
To demonstrate how to interact with our API, we are providing a reference CLI implementation: pkgsite-cli. This implementation serves as a practical example for developers looking to build their own integrations, showing how to handle the data directly from the terminal. Note, as the API continues to evolve, the interface and behavior of this CLI may change.
You can use it to search for packages or inspect symbols without leaving your shell:
go install golang.org/x/pkgsite/cmd/internal/pkgsite-cli@latest
pkgsite-cli search "uuid"
github.com/google/uuid
Module: github.com/google/[email protected]
Synopsis: Package uuid generates and inspects UUIDs.
... more
pkgsite-cli package github.com/google/go-cmp/cmp
github.com/google/go-cmp/cmp
Name: cmp
Module: github.com/google/go-cmp
Version: v0.7.0 (latest)
Synopsis: Package cmp determines equality of values.
pkgsite-cli package --symbols github.com/google/go-cmp/cmp
github.com/google/go-cmp/cmp
Name: cmp
Module: github.com/google/go-cmp
Version: v0.7.0 (latest)
Synopsis: Package cmp determines equality of values.
Symbols:
type Indirect struct{}
type MapIndex struct{}
type Option interface{}
... more
Looking Ahead
While we prioritize stability for our new /v1beta endpoints, we are eager to hear how open source communities use these resources to solve real-world problems.
We look forward to your feedback via our issue tracker and to seeing the tools you’ll build next.
Source: Google Open Source Blog
How we’re combatting AI scams with security, legislation and more
Learn how Google is fighting scammers on all fronts with industry-leading security, lawsuits and law enforcement and industry partners.
Source: The Official Google Blog
Stable Channel Update for ChromeOS / ChromeOS Flex
M-148, ChromeOS version 16640.61.0 (Browser version 148.0.7778.263) has rolled out to ChromeOS devices on the Stable channel.
If you find new issues, please let us know one of the following ways:
Visit our ChromeOS communities
General: Chromebook Help Community
Beta Specific: ChromeOS Beta Help Community
Interested in switching channels? Find out how.
Andy Wu
Google ChromeOS
Source: Google Chrome Releases
Chrome for Android Update
Hi, everyone! We've just released Chrome 149 (149.0.7827.114) for Android. It'll become available on Google Play over the next few days.
This release includes stability and performance improvements. You can see a full list of the changes in the Git log. If you find a new issue, please let us know by filing a bug.
Source: Google Chrome Releases
Beta Channel Update for ChromeOS / ChromeOS Flex
The ChromeOS Beta channel is being updated to OS version 16667.40.0 (Browser version 149.0.7827.136) for most ChromeOS devices.
- File a bug
Visit our ChromeOS communities
General: Chromebook Help Community
Beta Specific: ChromeOS Beta Help Community
Interested in switching channels? Find out how.
Luis Menezes
Google ChromeOS
Source: Google Chrome Releases
Our new community investments in Virginia support local jobs and expand energy affordability.
We’re helping build the state’s next-generation workforce and investing in energy programs.
Source: AI
Extended Stable Updates for Desktop
The Extended Stable channel has been updated to 148.0.7778.265 for Windows and Mac which will roll out over the coming days/weeks.
Source: Google Chrome Releases
Stable Channel Update for Desktop
The Stable channel has been updated to 149.0.7827.114/.115 for Windows and Mac and 149.0.7827.114 for Linux, which will roll out over the coming days/weeks. A full list of changes in this build is available in the Log
Security changes will be updated shortly
Interested in switching release channels? Find out how here. If you find a new issue, please let us know by filing a bug. The community help forum is also a great place to reach out for help or learn about common issues.
Srinivas Sista
Google Chrome
Source: Google Chrome Releases
Introducing OpenRL: A self-hosted post-training API for fine-tuning LLMs
We are pleased to share a research preview of OpenRL, a new open-source project coming out of GKE Labs. OpenRL is a self-hosted training API for fine-tuning LLMs on your own Kubernetes cluster.
Why we built it
If you look at agentic RL on LLMs, it is incredibly easy to get bogged down in system complexity. To run a single RL loop, you have to coordinate a dozen different things: selecting and cleaning datasets, choosing RL environments, debugging training loops, managing reward signals, handling inference mismatches, allocating hardware, and managing infrastructure. Picture looks something like this:
Each of these is a hard problem. But what makes it more complex is how tightly AI research and infrastructure concerns are mixed together in today's tooling and frameworks.
We believe decoupling the infrastructure from AI research can make these problems more tractable so that infrastructure engineers and AI researchers can independently tackle them. We have seen this pattern with Kubernetes where Kubernetes abstracted out the infrastructure and made application developers and SREs life easier.
So, can you abstract out post training infrastructure? We believe so and drew huge inspiration/validation from Tinker (from Thinking Machines). The Tinker APIs for post training hit that Goldilocks zone where it hides all the post training infrastructure behind four key APIs:
So the end result of this abstraction is that AI Researchers get full flexibility on their RL loop and infrastructure engineers can focus on scaling, orchestration, and reliability. OpenRL allows you to run the same training APIs but on your own infrastructure. And this decoupling has other interesting benefits.
Sharing GPUs
Traditional RL loops are strictly sequential. The trainer waits for the sampler to finish rollouts, the sampler waits for the environment to score rewards (which is often bound by slow CPU/network tasks), and the whole loop sits blocked. Your expensive GPUs spend a lot of time doing nothing. The abstraction allows running multiple RL jobs and allows infrastructure engineers to pack the training/sampling steps to utilize more of their GPUs. The graph below shows the GPU consumption in OpenRL for running one, two, and three RL jobs concurrently.
Better UX
Once you separate out the infrastructure behind the APIs, you start to see the gains in user experience of developing the RL loop because AI researchers no longer have to wrangle the complex python dependencies like cuda. When you are doing R&D, you do not have to run the RL loop directly on the machines with GPUs, you can simply run your RL loop on your Mac pointing to the training APIs running on a Kubernetes cluster/VMs.
Autoresearch
We believe that frontier AI research will get more and more automated in the future and abstracting out infrastructure as a building block is key to that. To demonstrate that, we added an autoresearch recipe inspired heavily by karpathy's work. The recipe demonstrates how to conduct parallel experiments to conduct parameter sweep, and improve the reward signal for our text-to-sql recipe for Gemma models.
What OpenRL is not
- A managed service. OpenRL is self-hosted and not a managed service. We aim to make it easy for users to deploy and operate it on their Kubernetes clusters.
- An RL framework. OpenRL gives AI researchers full control over their RL loop.
Get started
We have made it easy to run OpenRL on your Mac, Nvidia GPUs, or on GKE. This allows you to test your RL loop on Mac and when you are ready to scale, you can point the RL loop to the OpenRL endpoint running in the GKE cluster.
Try out our text-to-SQL example for teaching the latest Gemma model SQL here: guides.
One of the benefits of a Tinker compatible endpoint is that you can use Tinker-Cookbook with OpenRL. Tinker-cookbook is one of the best resources for post training infrastructure for RL.
Future steps
We have started with a simple architecture focussing on LoRA fine-tuning and plan to evolve the project in the coming months, so please give it a try and share your feedback. A few things we are very excited to work on:
- Full parameter fine-tuning
- Multitenancy (simultaneous RL on different types of base models)
Acknowledgement
We have been inspired by the work done by various open source projects in AI communities, so huge thank you to Thinking Machines, vLLM, PyTorch, prime-rl, verl, SkyRL, and llm-d.