Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 3594352
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 18, 20262026-05-18T19:42:06+00:00 2026-05-18T19:42:06+00:00

Does anybody know of a managed programming language implemented on .NET that contains a

  • 0

Does anybody know of a managed programming language implemented on .NET that contains a specialized data type that is not mapped through to the Common Type System/FCL/BCL or one that does not have a shipped .NET equivalent (e.g. shipped standard types like System.String, System.Int32)?

This question would likely come from the perspective of someone porting a compiler (although I’m not doing that).

Is it as simple as the language creating a new data type outside the BCL/FCL for its specialized type? If so does this hinder interoperability between programming languages that are otherwise accustomed to mapping all their built-in data types to what’s in the BCL/FCL, like Visual Basic and C#?

I can imagine this situation might come about if an obscure language compiler of some kind is ported to .NET for which there is no direct mapping of one of its implicit data types to the shipped Framework.

How is this situation supported or allowed in general? What would be the expectation of the compiler and the Common Language Runtime?

  • 1 1 Answer
  • 1 View
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. Editorial Team
    Editorial Team
    2026-05-18T19:42:07+00:00Added an answer on May 18, 2026 at 7:42 pm

    Delphi for .NET implemented the Delphi language’s notion of class variables (which can hold a reference to a class type), virtual class methods, and virtual constructors (called via a class reference). None of these have any direct analog in CLR – static methods in CLR cannot be virtual, and constructors cannot be virtual.

    Since CLR has such a rich soup of runtime type information, these artifacts aren’t strictly needed in CLR. If you want to construct an instance of a type at runtime in code that doesn’t know the exact type at compile time, you can do that with reflection or other techniques. These features of the Delphi language grew out of the natively compiled Win32 product where runtime type information is limited. This was all implemented on .NET 1.0 and 1.1, long before anything like the DLR came along.

    These Delphi language features could be emulated in CLR using reflection, but for performance reasons we opted to implement them directly in IL by creating a “meta class” type that was a sidecar to every class type declared in Delphi. If Delphi code assigned a Delphi class type to a class reference variable, we generated IL code to assign the singleton instance of the corresponding meta class to the variable. Virtual method calls via the class reference variable were codegen’d as IL virtual method calls on the meta class instance, which bounced to the actual static method implementation in the corresponding class type. This allowed the class virtual method calls to still behave polymorphically (to call the implementation appropriate to the type of the instance used to make the call) and with minimal runtime performance cost. This implementation was also type-safe and verifiable.

    These virtual class method features were only applicable to classes declared in Delphi syntax, and only useable in Delphi syntax. I believe the meta types were marked as non-CLS compliant so that other .NET languages would (most likely) ignore them when using classes created in Delphi. Other .NET languages could not make use of these Delphi specific language features (unless the developer was really determined and climbed through the scaffolding to make the appropriate calls to/through the ugly named meta classes)

    In general, you should not expect other languages to make use of non-CLS artifacts created by/for your language. If you want other languages to make use of stuff created by your language, you will need to figure out how to represent your special sauce in a way that can be represented in a reasonable way in CLS compliant terms. That may not be possible depending on the nature of the special sauce.

    Delphi virtual class methods were available to other .NET languages as normal static methods. The polymorphic nature was not exposed to other .NET languages largely because CLS (nor other languages) simply can’t express the notion.

    Ideally, every language would be able to express every imaginable construct equally well. But in reality that’s not the case. Some graphing functions are easier to express in cartesian coordinates, while others are vastly simplified by using polar coordinates. The same is true for programming languages.

    It’s ok to invent new means of expression in your own language even when it’s implemented on CLR. Just be sure to keep a clear definition of what your types look like to programmers working outside your language if you expect your language’s code to be called by others. Your implementation will have a duality: how things look to users of your language, and how things look to users outside of your language.

    Footnote: I don’t believe any of this applies to the new Delphi product for .NET, Delphi Prism. I don’t think Delphi Prism supports virtual class methods.

    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

Does anybody know if there is any library of managed wrappers that allows me
Does anybody know a Perl library that can parse XML documents and enables me
Does anybody know a Java implementation of the DRMAA-API that is known to work
Visual Studio language extensibility Does anybody know whether there's an open source (or paid)
Does anybody know how to change the COM port number that Windows maps to
Does anybody know how to add a button for adding new tabs that is
Does anybody know why this function, when passed an invalid date (e.g. timestamp) to
Does anybody know if the CUDA library 'Thrust' can generate random numbers on the
Does anybody know how to programmatically disable the keyboard individual letter pop-up? (This blue
Does anybody know why my getAltitude in the following always returns 0? package com.example.helloandroid;

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.