// Copyright 2018 The CUE Authors
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
//     http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
// See the License for the specific language governing permissions and
// limitations under the License.

// Package pkg define CUE builtin packages.
//
// The CUE core packages are different, but closely mimic the Go core packages.
// The types, values, and functions are defined as their Go equivalence and
// mapped to CUE types.
//
// Beware that some packages are defined in lesser-precision types than are
// typically used in CUE and thus may lead to loss of precision.
//
// All packages in these subdirectories are hermetic. That is, the results
// do not change based on environment conditions. That is:
//
//   - no reading of files contents
//   - no querying of the file system of any kind
//   - no communication on the network
//   - no information about the type of environment
//   - only reproduceable random generators
//
// Hermetic configurations allow for fast and advanced analysis that otherwise
// would not be possible or practical. The cue "cmd" command can be used to
// mix in non-hermetic influences into configurations.
package pkg
