# Features
export const Supported = () => (✓);
export const Partial = ({children = "Partial"}) => (
{children}
);
export const InProgress = () => (
In progress
);
export const Unsupported = () => (✗);
The following tables document the current level of support for each Thrift
feature in different languages.
| Thrift feature | C++ | Hack | Java | Python |
| :------------- | :-: | :--: | :--: | :----: |
| [Serialization](/features/serialization/index.md) | | | | |
| [Universal names](/features/universal-name.md) | | | | |
| [Streaming](/fb/features/streaming/index.md) | | Client[^1] | Client[^1] | |
| [Interactions](/fb/features/interactions.md) | | Client[^1] | Client[^1] | Client[^1] |
| [Adapters](/features/adapters.md) | | | | |
| [Dynamic values (Any)](/features/any.md) | | | | |
| [Terse write](/features/terse-write.md) | | | | |
[^1]: You can write Thrift clients but not servers using this feature. These
clients can connect to servers written in other languages.
Experimental features:
| Thrift feature | C++ | Hack | Java | Python |
| :------------- | :-: | :--: | :--: | :----: |
| [Patch](/features/patch/patch.md) | | | | |
| [Deterministic Hashing](/fb/languages/cpp/hash.md) | | | | |
The level of support of a feature in a given language is defined as follows:
| Symbol | Meaning |
| :----: | :------ |
| | Fully supported by Thrift |
| | Under development |
| <status> | Partially supported with the given status |
| | Not supported |