EMBEDDED_PROTOCOL_CHANGELOG.md
CompilerFunctions across different compilations.Color.channel1, Color.channel2, Color.channel3, and Color.alpha
as optional so they can represent missing channels.Add Color SassScript value.
Remove RgbColor, HslColor and HwbColor SassScript values.
fatal_deprecation field.containing_url_unused field to CanonicalizeResponse and
FileImportResponse.fatal_deprecation, silence_deprecation, and future_deprecation
fields to CompileRequest and deprecation_type to LogEvent, implementing
the deprecations API.NodePackageImporter as a built-in Package Importer, resolving pkg:
URLs using the standards and conventions of the Node ecosystem.CompileRequest.silent option that suppresses all LogEvents.Value.CompilerMixin value type to represent first-class mixins.Value.Calculation.CalculationValue.value.interpolation option,
and change how it's interpreted by the compiler.Use the Java package com.sass_lang.embedded_protocol and generate multiple
Java files when generating Java code. This doesn't affect any other languages.
Note: although this is technically a breaking change for Java users, 2.0.0 is so new that it's being rolled into that breakage rather than releasing 3.0.0 immediately.
The compilation ID for each CompileRequest and the various outbound requests
associated with a given compilation is now encoded as part of the wire
protocol, rather than being protobuf fields. This makes it easier for embedded
compilers to efficiently dispatch requests across multiple threads without
reparsing protocol buffers.
CompileRequest.id, CompileResponse.id, LogEvent.compilation_id,
CanonicalizeRequest.compilation_id, ImportRequest.compilation_id,
FileImportRequest.compilation_id, and FunctionCallRequest.compilation_id
fields have been removed.The following fields are now explicitly declared as proto3 optional fields:
ImportSuccess.source_map_url, LogEvent.span, SourceSpan.end. These
should no longer be considered unset when they have the default value, but
only when they're unset at the protocol level. All non-oneof fields are
mandatory. (oneof fields are still described as "optional" or "mandatory" in
the specification text.)
CompileSuccess.loaded_urls has been moved to CompileResponse.loaded_urls
so it's available even when compilation fails.
Have the compiler treat several user-generated invalid responses as
compilation errors rather than ProtocolErrors:
Invalid function signatures in CompileRequest.global_functions.
Non-absolute URLs in CanonicalizeResponse.result.url,
ImportSuccess.source_map_url, and FileImportResponse.result.file_url.
Clarify that an invalid signature in a HostFunction should treat the current
function as failing, rather than the HostFunction.
charset option that controls whether or not Sass emits a
@charset/BOM for non-ASCII stylesheets.CompileRequest.source_map_include_sources field that tells the
compiler to embed the contents of all source files in the generated source
maps.ImportResponse.result as optional. Importers should be able to return
null to indicate that a file wasn't found.Mark CompileFailure.span as mandatory. There's no instance where a
compilation itself should fail without having a source to point to.
Make it the compiler's responsibility to verify HostFunction.signature.
This ensures that the host doesn't have to parse Sass code.
Pluralize Calculation.arguments.
Explicitly document how hosts should handle calculations.
Add the Value.HwbColor type.
Explicitly specify that compilers may choose which color types to use to represent each color.
Value.ArgumentList type, as well as
FunctionCallResponse.accessed_argument_lists to track which argument lists
had their keywords accessed.Breaking change: We now follow the protocol buffer style guide. This means:
Add CompileRequest.quiet_deps and CompileRequest.verbose flags to control
how the compiler emits compilation warnings.
Add a CompileSuccess.loaded_urls field that indicates the URLs that were
loaded by a compilation.
Clarify that CompileRequest.StringInput.url must be a canonical URL.
Fix the documentation of CanonicalizeRequest to avoid referring to the
outmoded CanonicalizeResponse.result.file field.
VersionRequest.id and VersionResponse.id.CanonicalizeRequest.fromImport and FileImportRequest.fromImport
fields to allow importers to correctly handle import-only files.Added fields to support requesting and sending formatted errors and logs.
CompileRequest.alert_colorCompileRequest.alert_asciiCompileFailure.formattedLogEvent.formattedRemove OutputStyle.NESTED and OutputStyle.COMPACT. It's unlikely that any
host would support those any time soon.
4294967295 as the special ID for error messages that aren't caused by a
specific request, since -1 isn't representable as a uint32.Changed CompileResponse.id and ProtocolError.id from int32 to uint32
to match the type of all other ID fields.
Added protocol versions and created this changelog.
Added the VersionRequest and VersionResponse messages.
Delimit messages with varints rather than fixed-size integers.