title: Configuration sidebar_position: 2 id: configuration license: | Licensed to the Apache Software Foundation (ASF) under one or more contributor license agreements. See the NOTICE file distributed with this work for additional information regarding copyright ownership. The ASF licenses this file to You 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.

This page covers ForyConfig and recommended runtime presets.

ForyConfig

Fory is configured with:

public struct ForyConfig {
    public var xlang: Bool
    public var trackRef: Bool
    public var compatible: Bool
}

Default configuration:

let fory = Fory() // xlang=true, trackRef=false, compatible=false

Threading

Fory is single-threaded and optimized to reuse one read/write context pair on the calling thread. Reuse one instance per thread and do not use the same instance concurrently.

Options

xlang

Controls cross-language protocol mode.

  • true: Use xlang wire format (default)
  • false: Use Swift-native mode
let fory = Fory(xlang: true)

trackRef

Enables shared/circular reference tracking for reference-trackable types.

  • false: No reference table (smaller/faster for acyclic or value-only graphs)
  • true: Preserve object identity for class/reference graphs
let fory = Fory(xlang: true, trackRef: true)

compatible

Enables compatible schema mode for evolution across versions.

  • false: Schema-consistent mode (stricter, lower metadata overhead)
  • true: Compatible mode (supports add/remove/reorder fields)
let fory = Fory(xlang: true, trackRef: false, compatible: true)

Recommended Presets

Local, strict schema

let fory = Fory(xlang: false, trackRef: false, compatible: false)

Cross-language service payloads

let fory = Fory(xlang: true, trackRef: false, compatible: true)

Graph/object identity workloads

let fory = Fory(xlang: true, trackRef: true, compatible: true)