On Thu, Nov 3, 2016 at 1:30 PM, Simon Sapin <simon.sa...@exyr.org> wrote:

> On 03/11/16 21:02, Boris Zbarsky wrote:
>
>> On 11/3/16 3:17 PM, Simon Sapin wrote:
>>
>>> An important aspect is that atoms with different static sets are
>>> different Rust types.
>>>
>>
>> Just to check that I understand correctly...
>>
>> Are element names atoms?  Which static set do they come from?
>> Presumably the html5ever one?
>>
>
> Yes. Previously Servo had a single Atom type that was used, among other
> things, for element names.
>
> Now there is html5ever_atoms::LocalName (which is a type alias for
> string_cache::Atom<html5ever_atoms::LocalNameStaticSet>), used for
> element and content attribute names.
>
>
> When parsing CSS selectors, are tag name selectors atomized?  Which
>> static set is used for that?
>>
>
> Yes. Types from the selectors crate are generic, with a trait that has
> associated types for the string types of various components.
>
> Servo defines:
>
>     type AttrValue = std::string::String;
>     type Identifier = servo_atoms::Atom;
>     type ClassName = servo_atoms::Atom;
>     type LocalName = html5ever_atoms::LocalName;
>     type NamespacePrefix = html5ever_atoms::Prefix;
>
> Stylo defines:
>
>     type AttrValue = gecko_string_cache::Atom;
>     type Identifier = gecko_string_cache::Atom;
>     type ClassName = gecko_string_cache::Atom;
>     type LocalName = gecko_string_cache::Atom;
>     type NamespacePrefix = gecko_string_cache::Atom;
>
> gecko_string_cache::Atom wraps *mut nsIAtom.
>
> (I don’t know if there’s a reason for the discrepancy: interning attribute
> values in selectors in Stylo but not Servo. We can change it.)
>

I did this for stylo because those attribute values needed to be passed
across the FFI boundaries, and passing atoms is much cheaper than passing
strings. There was some mechanical reason I couldn't do it easily for
Servo, but I don't remember what it was.


>
> --
> Simon Sapin
>
> _______________________________________________
> dev-servo mailing list
> dev-servo@lists.mozilla.org
> https://lists.mozilla.org/listinfo/dev-servo
>
_______________________________________________
dev-servo mailing list
dev-servo@lists.mozilla.org
https://lists.mozilla.org/listinfo/dev-servo

Reply via email to