cloudposse / cloudposse/atmos

chore: complete mergo migration — port remaining call sites in merge_yaml_functions.go and config_loader.go

Open
#2,242 0 comments 0 reactions 0 assignees View on GitHub
Dominant language
Go
Stars
1.4k
Forks
175
Avg merge
2d 3h
Merged PRs (30d)
134

Description

## Summary

PR [#2201](https://github.com/cloudposse/atmos/pull/2201) replaced the hot-path deep merge implementation with a native Go implementation (`deepMergeNative`) that is ~3.5× faster. However, the `mergo` library is still used in two lower-traffic call sites:

- `pkg/merge/merge_yaml_functions.go` — YAML function merge helpers
- `pkg/devcontainer/config_loader.go` — devcontainer config loading

## Goal

1. Port `pkg/merge/merge_yaml_functions.go` to use `deepMergeNative` / `MergeWithOptions`
2. Port `pkg/devcontainer/config_loader.go` to use the native merge
3. Remove `dario.cat/mergo` from `go.mod` / `go.sum` entirely (eliminates CVE surface)

## Why

Until these sites are ported, a future CVE in `mergo` could still affect atmos. The dependency should be dropped once no call sites remain.

## References

- PR #2201 — native deep merge hot-path
- Blog post: [3.5× faster deep merge](https://cloudposse.github.io/atmos/blog/faster-deep-merge)

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.