Each host language interface should have a column in each table below.
Please keep the tables up to date as languages, fields, methods, etc. are
added, modified, etc. Names marked as code
are literal, and should agree
(modulo case, spelling, etc.) across implementations; bare names like
"delete" have language-specific names, but should have similar semantics.
Top-level authorization API.
| Method | Python | Ruby | Java | Node.js | Rust |
| ------------ | ------ | ---- | ---- | ------- | ---- |
| is_allowed
| x | x | x | x | x |
Polar
methodsTop-level Polar language API: load and query Polar.
| Field Name | Python | Ruby | Java | Node.js | Rust |
| ----------------- | ------ | ---- | ---- | ------- | ---- |
| ffi_polar
| x | x | x | x | x |
| host
| x | x | x | x | x |
| Method | Python | Ruby | Java | Node.js | Rust |
| ------------------- | ------ | ---- | ---- | ------- | ---- |
| delete | x | x | x | x | x |
| clear
| x | x | x | x | x |
| load_file
| x | x | x | x | x |
| load_str
| x | x | x | x | x |
| query(str)
| x | x | x | x | x |
| query(pred)
| x | x | x | x | |
| query_rule
| x | x | x | x | x |
| repl
| x | x | x | | |
| register_class
| x | x | x | x | x |
| register_constant
| x | x | x | x | x |
Execute a Polar query through the FFI event interface.
| Class | Python | Ruby | Java | Node.js | Rust |
| ------------- | ------ | ---- | ---- | --------------- | ----------- |
| Query
| x | x | x | x | x |
| QueryResult
| x | | | type, not class | ResultSet
|
| Field Name | Python | Ruby | Java | Node.js | Rust |
| ----------- | ------ | ---- | ---- | ------- | ---- |
| ffi_query
| x | x | x | x | x |
| host
| x | x | x | x | x |
| calls
| x | x | x | x | x |
| results
| | x | | x | |
| Event Name | Python | Ruby | Java | Node.js | Rust |
| -------------------------- | ------ | ---- | ---- | ------- | ---- |
| Debug
| x | x | x | x | |
| Done
| x | x | x | x | x |
| ExternalCall
| x | x | x | x | x |
| ExternalIsa
| x | x | x | x | x |
| ExternalIsSubSpecializer
| x | x | x | x | |
| ExternalOp
| x | | | | |
| ExternalUnify
| x | x | | x | |
| MakeExternal
| x | x | x | x | x |
| NextExternal
| x | x | x | x | |
| Result
| x | x | x | x | x |
| Method | Python | Ruby | Java | Node.js | Rust |
| ------------------- | ------ | ------- | ------------ | ------- | ------ |
| question_result
| | x | | x | x |
| call_result
| | x | | x | x |
| next_call_result
| | x | x | x | x |
| application_error
| | x | | x | x |
| handle_call
| | x | x | x | x |
| next_external
| | x | x | x | x |
| has_more_elements
| | | x | | |
| next_element
| | | x | | |
| results
| | | x | | |
| getCall
| | | x | | |
| run
| run
| start
| nextResult
| start
| next
|
Maintain mappings & caches for host language classes & instances.
| Field Name | Python | Ruby | Java | Node.js | Rust |
| -------------- | ------ | ---- | ---- | ------- | ---- |
| ffi_polar
| x | x | x | x | x |
| classes
| x | x | x | x | x |
| instances
| x | x | x | x | x |
| Method | Python | Ruby | Java | Node.js | Rust |
| ------------------- | ------ | ---- | ---- | ------- | ---- |
| delete | x | x | x | | x |
| copy | x | x | x | x | |
| get_class
| x | x | x | x | x |
| cache_class
| x | x | x | x | x |
| get_instance
| x | x | x | x | x |
| has_instance
| | x | x | x | |
| cache_instance
| x | x | x | x | x |
| make_instance
| x | x | x | x | x |
| isa
| x | x | x | x | x |
| is_subspecializer
| x | x | x | x | |
| unify
| x | x | | x | |
| operator
| x | | | | |
| to_polar
| x | x | x | x | x |
| to_host | x | x | x | x | x |
| MessageType | Python | Ruby | Java | Node.js | Rust | | ----------- | ------ | ---- | ---- | ------- | ---- | | Print | x | x | x | x | x | | Warning | x | x | x | x | x |
| FFI call | Python | Ruby | Java | Node.js | Rust |
| --------------------- | ------ | ---- | ---- | ------- | ---- |
| load
| x | x | x | x | x |
| new_query_from_str
| x | x | x | x | x |
| new_query_from_term
| x | x | x | x | x |
| next_inline_query
| x | x | x | x | x |
| next_query_event
| x | x | x | x | x |
| debug_command
| x | x | x | x | x |