From 2722c16ae97135a89c2c5df36e9026b7f610bb5d Mon Sep 17 00:00:00 2001 From: gords2 Date: Sat, 20 Jun 2026 19:36:39 -0700 Subject: [PATCH 1/2] Add Roblox .rbxmx and .rbxlx as XML .rbxmx (Roblox model) and .rbxlx (Roblox place) are Roblox Studio's XML-based serialization formats. Both are well-formed XML documents rooted in a element. This adds the two extensions to the XML language entry and includes a real-world sample for each. Closes #7928 --- lib/linguist/languages.yml | 2 + samples/XML/roblox-baseplate.rbxlx | 609 +++++++++++++++++++++++++++++ samples/XML/roblox-model.rbxmx | 246 ++++++++++++ 3 files changed, 857 insertions(+) create mode 100644 samples/XML/roblox-baseplate.rbxlx create mode 100644 samples/XML/roblox-model.rbxmx diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index 92b013df81..4c1fd93d39 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -8853,6 +8853,8 @@ XML: - ".pt" - ".pubxml" - ".qhelp" + - ".rbxlx" + - ".rbxmx" - ".rdf" - ".res" - ".resx" diff --git a/samples/XML/roblox-baseplate.rbxlx b/samples/XML/roblox-baseplate.rbxlx new file mode 100644 index 0000000000..299e730ae7 --- /dev/null +++ b/samples/XML/roblox-baseplate.rbxlx @@ -0,0 +1,609 @@ + + null + nil + + + false + + Default^0^1 + RBX51486BC6862B44BDA152A05A6E3A6C80 + 0 + true + -500 + true + 196.199997 + + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 1 + + Workspace + null + false + 64 + 0 + 1024 + + false + true + + + + + + 0.321689844 + 18.2346153 + 23.7645969 + 0.98357147 + -0.0819535926 + 0.160844535 + -0 + 0.891008377 + 0.453987002 + -0.180519685 + -0.446528673 + 0.876370251 + + null + 0 + 70 + + 0 + 17.3266392 + 22.0118523 + 1 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 1 + + true + 1 + Camera + + + + + + true + + -0.5 + 0.5 + 0 + 0 + -0.5 + 0.5 + 4 + 0 + + 0 + -10 + 0 + 1 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 1 + + true + true + 0 + 4284702562 + + false + + -0.5 + 0.5 + 0 + 0 + -0.5 + 0.5 + 0 + 0 + true + false + 256 + Baseplate + 0 + -0.5 + 0.5 + 0 + 0 + 0 + + 0 + 0 + 0 + + + -0.5 + 0.5 + 3 + 0 + 0 + + 0 + 0 + 0 + + 0 + 1 + + 512 + 20 + 512 + + + + + + true + + -0.5 + 0.5 + 0 + 0 + -0.5 + 0.5 + 4 + 0 + + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 1 + + true + true + 0 + 4288914085 + + false + + false + -0.5 + 0.5 + 0 + 0 + -0.5 + 0.5 + 0 + 0 + true + false + 256 + + Terrain + AgMAAAAAAAAAAAAAAAA= + 0 + -0.5 + 0.5 + 0 + 0 + 0 + + 0 + 0 + 0 + + AQU= + + -0.5 + 0.5 + 3 + 0 + 0 + + 0 + 0 + 0 + + + 0.0470588282 + 0.329411775 + 0.360784322 + + 1 + 0.300000012 + 0.150000006 + 10 + + 2044 + 252 + 2044 + + + + + + + 0 + + 3.32999992 + 1 + SoundService + true + 1 + + + + + + + NonReplicatedCSGDictionaryService + + + + + + + CSGDictionaryService + + + + + + + false + true + Chat + + + + + + + Instance + + + + + + + true + 12 + Players + 56832 + 5 + + + + + + + ReplicatedFirst + + + + + + + TweenService + + + + + + + false + StudioData + 0 + 0 + + + + + + true + + true + 128 + 0.5 + 0 + 7.19999981 + 50 + 89 + true + 16 + 0 + 0 + 0 + 0 + 0 + true + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 0 + 1 + 0 + 0 1 + 0.95 1 + 0.9 1.05 + 0 1 + 0.7 1 + 100 + true + StarterPlayer + 100 + + true + + + + + StarterPlayerScripts + + + + + + + StarterCharacterScripts + + + + + + + + StarterPack + + + + + + + StarterGui + true + 2 + true + + + + + + + LocalizationService + + + + + + + Teleport Service + + + + + + + CollectionService + + + + + + + PhysicsService + + + + + + + Geometry + + + + + + false + false + + InsertService + + + + + + + GamePassService + + + + + + + 1000 + Debris + + + + + + + CookiesService + + + + + + + VRService + + + + + + + ContextActionService + + + + + + + Instance + + + + + + + AssetService + + + + + + + TouchInputService + + + + + + + Selection + + + + + + + false + ServerScriptService + + + + + + + ServerStorage + + + + + + + ReplicatedStorage + + + + + + + Instance + + + + + + + 0 + 0 + 0 + + + 2 + + 0 + 0 + 0 + + + 0 + 0 + 0 + + 0 + 0 + 0 + + 0.752941251 + 0.752941251 + 0.752941251 + + 100000 + 0 + 41.7332993 + true + false + Lighting + + 0.501960814 + 0.501960814 + 0.501960814 + + false + 0.5 + + 1 + 14:00:00 + + + + + + false + HttpService + + + + + + + true + + false + true + true + true + TestService + 0 + 0 + + 10 + + + + + + VirtualInputManager + + + + \ No newline at end of file diff --git a/samples/XML/roblox-model.rbxmx b/samples/XML/roblox-model.rbxmx new file mode 100644 index 0000000000..e042ca243d --- /dev/null +++ b/samples/XML/roblox-model.rbxmx @@ -0,0 +1,246 @@ + + true + null + nil + + + false + + -0.5 + 0.5 + 0 + 0 + -0.5 + 0.5 + 0 + 0 + + -5.5 + 4 + -12.5 + 1 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 1 + + true + true + 0 + 4278255615 + + false + + -0.5 + 0.5 + 0 + 0 + -0.5 + 0.5 + 0 + 0 + false + false + 256 + Brush your teeth + 0 + -0.5 + 0.5 + 0 + 0 + 0 + + 0 + 0 + 0 + + -1 + + -0.5 + 0.5 + 0 + 0 + 0 + + 0 + 0 + 0 + + 1 + 1 + + 1 + 2 + 3 + + + + + + false + + -0.5 + 0.5 + 0 + 0 + -0.5 + 0.5 + 0 + 0 + + -11.5 + -0.499992996 + -17.5 + 1 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 1 + + true + true + 0 + 4281099549 + + true + 0.699999988 + 0.300000012 + 0.5 + 1 + 1 + + -0.5 + 0.5 + 0 + 0 + -0.5 + 0.5 + 0 + 0 + false + false + 256 + Eat your greens + 0 + -0.5 + 0.5 + 0 + 0 + 0 + + 0 + 0 + 0 + + -1 + + -0.5 + 0.5 + 0 + 0 + 0 + + 0 + 0 + 0 + + 1 + 1 + + 4 + 5 + 6 + + + + + + false + + -0.5 + 0.5 + 0 + 0 + -0.5 + 0.5 + 0 + 0 + + 5.5 + 8.5 + -25.5 + 1 + 0 + 0 + 0 + 1 + 0 + 0 + 0 + 1 + + true + true + 0 + 4294901951 + + true + 90.6600037 + 1.44000006 + 0.649999976 + 50.5 + 40.5 + + -0.5 + 0.5 + 0 + 0 + -0.5 + 0.5 + 0 + 0 + false + false + 256 + Live wildly + 0 + -0.5 + 0.5 + 0 + 0 + 0 + + 0 + 0 + 0 + + -1 + + -0.5 + 0.5 + 0 + 0 + 0 + + 0 + 0 + 0 + + 1 + 1 + + 7 + 8 + 9 + + + + \ No newline at end of file From 71c75beb58941e354e39527f087404f9e33b5290 Mon Sep 17 00:00:00 2001 From: gords2 Date: Sun, 21 Jun 2026 10:49:54 -0700 Subject: [PATCH 2/2] Address review: drop .rbxlx, shrink .rbxmx sample Per review feedback on #8032: - Remove the .rbxlx extension (and its sample) due to thin in-the-wild usage (~108 indexed files), keeping only .rbxmx (~46.2k). - Trim the roblox-model.rbxmx sample from 246 to 82 lines so it no longer slows the classifier, keeping the source well-formed XML. --- lib/linguist/languages.yml | 1 - samples/XML/roblox-baseplate.rbxlx | 609 ----------------------------- samples/XML/roblox-model.rbxmx | 164 -------- 3 files changed, 774 deletions(-) delete mode 100644 samples/XML/roblox-baseplate.rbxlx diff --git a/lib/linguist/languages.yml b/lib/linguist/languages.yml index 4c1fd93d39..324ae88e54 100644 --- a/lib/linguist/languages.yml +++ b/lib/linguist/languages.yml @@ -8853,7 +8853,6 @@ XML: - ".pt" - ".pubxml" - ".qhelp" - - ".rbxlx" - ".rbxmx" - ".rdf" - ".res" diff --git a/samples/XML/roblox-baseplate.rbxlx b/samples/XML/roblox-baseplate.rbxlx deleted file mode 100644 index 299e730ae7..0000000000 --- a/samples/XML/roblox-baseplate.rbxlx +++ /dev/null @@ -1,609 +0,0 @@ - - null - nil - - - false - - Default^0^1 - RBX51486BC6862B44BDA152A05A6E3A6C80 - 0 - true - -500 - true - 196.199997 - - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 1 - - Workspace - null - false - 64 - 0 - 1024 - - false - true - - - - - - 0.321689844 - 18.2346153 - 23.7645969 - 0.98357147 - -0.0819535926 - 0.160844535 - -0 - 0.891008377 - 0.453987002 - -0.180519685 - -0.446528673 - 0.876370251 - - null - 0 - 70 - - 0 - 17.3266392 - 22.0118523 - 1 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 1 - - true - 1 - Camera - - - - - - true - - -0.5 - 0.5 - 0 - 0 - -0.5 - 0.5 - 4 - 0 - - 0 - -10 - 0 - 1 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 1 - - true - true - 0 - 4284702562 - - false - - -0.5 - 0.5 - 0 - 0 - -0.5 - 0.5 - 0 - 0 - true - false - 256 - Baseplate - 0 - -0.5 - 0.5 - 0 - 0 - 0 - - 0 - 0 - 0 - - - -0.5 - 0.5 - 3 - 0 - 0 - - 0 - 0 - 0 - - 0 - 1 - - 512 - 20 - 512 - - - - - - true - - -0.5 - 0.5 - 0 - 0 - -0.5 - 0.5 - 4 - 0 - - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 1 - - true - true - 0 - 4288914085 - - false - - false - -0.5 - 0.5 - 0 - 0 - -0.5 - 0.5 - 0 - 0 - true - false - 256 - - Terrain - AgMAAAAAAAAAAAAAAAA= - 0 - -0.5 - 0.5 - 0 - 0 - 0 - - 0 - 0 - 0 - - AQU= - - -0.5 - 0.5 - 3 - 0 - 0 - - 0 - 0 - 0 - - - 0.0470588282 - 0.329411775 - 0.360784322 - - 1 - 0.300000012 - 0.150000006 - 10 - - 2044 - 252 - 2044 - - - - - - - 0 - - 3.32999992 - 1 - SoundService - true - 1 - - - - - - - NonReplicatedCSGDictionaryService - - - - - - - CSGDictionaryService - - - - - - - false - true - Chat - - - - - - - Instance - - - - - - - true - 12 - Players - 56832 - 5 - - - - - - - ReplicatedFirst - - - - - - - TweenService - - - - - - - false - StudioData - 0 - 0 - - - - - - true - - true - 128 - 0.5 - 0 - 7.19999981 - 50 - 89 - true - 16 - 0 - 0 - 0 - 0 - 0 - true - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 0 - 1 - 0 - 0 1 - 0.95 1 - 0.9 1.05 - 0 1 - 0.7 1 - 100 - true - StarterPlayer - 100 - - true - - - - - StarterPlayerScripts - - - - - - - StarterCharacterScripts - - - - - - - - StarterPack - - - - - - - StarterGui - true - 2 - true - - - - - - - LocalizationService - - - - - - - Teleport Service - - - - - - - CollectionService - - - - - - - PhysicsService - - - - - - - Geometry - - - - - - false - false - - InsertService - - - - - - - GamePassService - - - - - - - 1000 - Debris - - - - - - - CookiesService - - - - - - - VRService - - - - - - - ContextActionService - - - - - - - Instance - - - - - - - AssetService - - - - - - - TouchInputService - - - - - - - Selection - - - - - - - false - ServerScriptService - - - - - - - ServerStorage - - - - - - - ReplicatedStorage - - - - - - - Instance - - - - - - - 0 - 0 - 0 - - - 2 - - 0 - 0 - 0 - - - 0 - 0 - 0 - - 0 - 0 - 0 - - 0.752941251 - 0.752941251 - 0.752941251 - - 100000 - 0 - 41.7332993 - true - false - Lighting - - 0.501960814 - 0.501960814 - 0.501960814 - - false - 0.5 - - 1 - 14:00:00 - - - - - - false - HttpService - - - - - - - true - - false - true - true - true - TestService - 0 - 0 - - 10 - - - - - - VirtualInputManager - - - - \ No newline at end of file diff --git a/samples/XML/roblox-model.rbxmx b/samples/XML/roblox-model.rbxmx index e042ca243d..df848239a7 100644 --- a/samples/XML/roblox-model.rbxmx +++ b/samples/XML/roblox-model.rbxmx @@ -79,168 +79,4 @@ - - - false - - -0.5 - 0.5 - 0 - 0 - -0.5 - 0.5 - 0 - 0 - - -11.5 - -0.499992996 - -17.5 - 1 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 1 - - true - true - 0 - 4281099549 - - true - 0.699999988 - 0.300000012 - 0.5 - 1 - 1 - - -0.5 - 0.5 - 0 - 0 - -0.5 - 0.5 - 0 - 0 - false - false - 256 - Eat your greens - 0 - -0.5 - 0.5 - 0 - 0 - 0 - - 0 - 0 - 0 - - -1 - - -0.5 - 0.5 - 0 - 0 - 0 - - 0 - 0 - 0 - - 1 - 1 - - 4 - 5 - 6 - - - - - - false - - -0.5 - 0.5 - 0 - 0 - -0.5 - 0.5 - 0 - 0 - - 5.5 - 8.5 - -25.5 - 1 - 0 - 0 - 0 - 1 - 0 - 0 - 0 - 1 - - true - true - 0 - 4294901951 - - true - 90.6600037 - 1.44000006 - 0.649999976 - 50.5 - 40.5 - - -0.5 - 0.5 - 0 - 0 - -0.5 - 0.5 - 0 - 0 - false - false - 256 - Live wildly - 0 - -0.5 - 0.5 - 0 - 0 - 0 - - 0 - 0 - 0 - - -1 - - -0.5 - 0.5 - 0 - 0 - 0 - - 0 - 0 - 0 - - 1 - 1 - - 7 - 8 - 9 - - - \ No newline at end of file