Skip to content

Bring the feature matrix and the library table up to date with each language's rc - #314

Draft
jwrosewell wants to merge 4 commits into
rcfrom
docs/feature-matrix-monday
Draft

jwrosewell wants to merge 4 commits into
rcfrom
docs/feature-matrix-monday

Conversation

@jwrosewell

@jwrosewell jwrosewell commented Nov 14, 2026 •

Copy link
Copy Markdown
Contributor

Problem

The feature matrix and the library table on the home page had fallen behind the languages. PHP IP Intelligence was blank although PHP now loads both on-premise extensions in one PHP (51degrees-php#88). Go was shown with no Pipeline and no cloud. The Pipeline API features table had no Go cells and no Rust row at all, and had no place for the file system watcher, derived properties or agent signature. The home page listed no Rust, no C or C++ and no PHP IP Intelligence.

What I checked

Every cell was checked against each language's rc branch at the commits below, which is what the releases on Monday 16 November put on main.

Repository rc commit
51degrees-cxx af1c6d38
51degrees-dotnet 000db2e0
51degrees-java c5d4559f
51degrees-node 7e4685ad
51degrees-python 3f936f8d
51degrees-php 2104ad7f
51degrees-go b49e63dc
51degrees-rust 502ad2d9

Cells that were already right and stay as they are include the C and C++ row (on-premise only, no Pipeline, see AGENTS.md), the ticks for .NET, Java, Node.js and Python in the data services table, the PHP footnotes for on-premise Device Detection and the session cache, and the empty asynchronous execution cells for .NET and Java, which the asynchronous execution page explains. The JavaScript row is about the cloud's client-side script, which none of these repositories hold, so it is unchanged and was not checked here.

What changed, cell by cell

Data services

Cell Was Now Evidence
PHP, IP Intelligence blank tick, with a footnote that it is not on Packagist yet IpIntelligenceOnPremise.php line 49 and IpIntelligenceCloud.php line 44. The README, line 43 and lines 105 to 107 says ip-intelligence has no mirror and is not released to Packagist, and https://repo.packagist.org/p2/51degrees/fiftyone.ipintelligence.json answered 404 on 14 November.
PHP, Device Detection footnote "On-premise not available through Composer" "On-premise is not on Packagist. Install it from a clone of 51degrees-php." The README, lines 45 to 47 says on-premise is used through a Composer path repository, so "not through Composer" was not quite true.
Go, IP Intelligence On-premise only tick The cloud engine is ipi_cloud/engine.go line 50, built on the Pipeline's cloud request engine (lines 37 to 39).
Go, Device Detection On-premise only unchanged No Device Detection cloud engine exists. The engine is onpremise.go line 49.
Go, Pipeline blank tick, with a footnote pipeline/core/builder.go line 31. The footnote repeats pipeline/README.md line 11, that the on-premise engines do not run in the Pipeline yet.

Web integrations and plugins

Cell Was Now Evidence
Java Java Servlet Java Servlet, Spring MVC FiftyOneInterceptor.java line 63, a Spring MVC interceptor in pipeline.web.mvc
Go N/A net/http pipeline/web/middleware.go line 119, Middleware.Handler(next http.Handler)

Pipeline API features

The table now has a row for each feature and a column for each language. With ten features and seven languages, a row for each language had become wider than the page, and a new feature is now one new row.

Cell Was Now Evidence
Go, client-side evidence blank tick javascriptbuilder.go line 130
Go, usage sharing blank tick usagesharing.go line 98
Go, lazy loading blank tick aspectengine.go line 75, SetLazyLoading
Go, parallel execution blank tick parallel.go line 149, AddParallel
Go, result caching blank tick cache.go line 59
Rust, automatic data file updates no row tick data_update_service.rs
Rust, client-side evidence no row tick javascript-builder/src/element.rs line 210
Rust, usage sharing no row tick share_usage_element.rs line 549
Rust, parallel execution no row tick pipeline.rs line 432, add_parallel_elements
Rust, result caching no row tick aspect_engine.rs line 271, with_cache
Rust, asynchronous execution and lazy loading no row blank FlowData::process is synchronous, and only the axum layer hands work to a blocking thread. lazy_loading.rs lines 25 to 35 says the base engine runs inline and no engine starts a worker.
Result caching footnote none the on-premise Device Detection and IP Intelligence engines take no results cache Each language refuses one, for example .NET, Node.js, Python and Rust. The reason given is the one in footnote 3 of the Device Detection on-premise specification, lines 162 to 172, "A results cache is not supported for this Engine at present, because of the complexity of coordinating the lifetime and thread safety of a result with the underlying C code, which owns the memory that the result reads its values from."
File system watcher, new row none .NET, Java, Node.js, Python, Go, Rust .NET, Java, Node.js, Python, Go, Rust. PHP has none.
Derived properties, new row none .NET, PHP, Go, Rust .NET, PHP (from 51degrees-php#89), Go (from 51degrees-go#132, merged into Go's rc at 13:11 UTC on 14 November), Rust
Agent signature, new row none .NET, Rust .NET, Rust. No other language has one.

Home page library table

Row Was Now
C and C++ missing src/dd and src/ipi
PHP, IP Intelligence "-" ip-intelligence
Rust missing the fiftyone-device-detection crate in device-detection and the fiftyone-ip-intelligence crate in ip-intelligence

The links use tree/main, like the rows already there, so they name the folders that the Monday releases put on main.

When this merges

  1. After the Monday 16 November releases reach main in each language, because the PHP, Go and Rust cells describe their rc branches.
  2. After documentation#315, the draft that adds the derived properties page, because the new derived properties row links to PipelineApi_Features_DerivedProperties, which that draft creates. The documentation build does not fail on a missing page (WARN_AS_ERROR = NO in docs/Doxyfile), but the link would not work until then.

What remains

  • Node.js (51degrees-node#98) and Python (51degrees-python#125) have derived properties in drafts, and Java is adding them. Each tick goes in once its change merges into rc, and I will update this draft if that happens before Monday.
  • The file system watcher in .NET and Rust ran only while automatic updates were on at the commits above. 51degrees-dotnet#190 and 51degrees-rust#430, merged into their rc since, make it run on its own setting with no License Key, as Java, Node.js, Python and Go already do under the data update specification. The tick is right either way, because each language has a watcher.
  • In 51degrees-php, ip-intelligence/readme.md line 37 tells readers to run composer require 51degrees/fiftyone.ipintelligence, which Packagist does not have. That is for the PHP repository.

Build

Checks on the head, 315d628, all green.

  • Preview built the documentation with Doxygen. Its one warning from this change is featurematrix.md:47: warning: unable to resolve reference to 'PipelineApi_Features_DerivedProperties', the link that documentation#315 resolves.
  • utm-link-lint found no campaign tag, as this repository's .utm-lint.json ({ "mode": "forbid" }) requires.
  • Only rc into main passed.

…anguage's rc

Data services: PHP and Go IP Intelligence, Go Pipeline. Web integrations:
Spring MVC for Java and net/http for Go. Pipeline API features: one row
per feature with a column per language, adding Go and Rust, and rows for
the file system watcher, derived properties and agent signature. The
library table on the home page gains C and C++, PHP IP Intelligence and
Rust.
@github-actions

Copy link
Copy Markdown
Contributor

Documentation preview 👀

51degrees-go#132 put the Derived Property Element on Go's rc.
jwrosewell added a commit that referenced this pull request Nov 15, 2026
…320)

The [IP Intelligence quick start](https://github.com/51Degrees/documentation/blob/03fd8b8b87a2daae55d27991e0abeddc2cbc8710/src/ipintelligence/quickstart.md?plain=1#L61-L70) has tabs for C, C++, .NET, Java, Go and Rust, and none for Node.js, Python or PHP, although all three have IP Intelligence for the cloud and on-premise. PHP's became usable alongside Device Detection with [51degrees-php#88](51Degrees/51degrees-php#88), on PHP's `rc` for the release on Monday 16 November, which loads both on-premise extensions in one PHP. The [feature matrix draft](#314) now shows IP Intelligence for all three.

This branch has not been deployed

No deployments
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant