Lista de resources da linguagem Delphi e versão em que foram introduzidos / descontinuados

Antes de começar, gostaria de salientar que, de forma sincera e exaustiva, procurei de forma repetida e exaustiva através do Google por tal coisa e não consegui encontrar uma.

Eu necessito (para um projeto que estou desenvolvendo) uma lista de todos os Delphi (2007 para a última versão lançada, eu não suporto mais nenhuma versão anterior a 2007) “Language Features”, e as versões nas quais eles foram introduzidos e ( quando aplicável) reprovado, melhorado ou removido.

Eu observei perguntas semelhantes a isso no Stack Overflow antes, embora a maioria delas tenha sido expressa na forma de “qual recurso é o melhor” e fechada como inadequada.

Se alguém souber de tal lista (ou tiver tempo livre suficiente para compilar uma), ficaria muito grato.

A resposta aceita conterá um link para tal lista ou a própria lista.

Observe que essa resposta lista apenas os novos resources de idioma

Aqui estão os links para o docwiki do RAD Studio:

  • O que há de novo no Delphi e no C ++ Builder 10.2 Tokyo
  • O que há de novo no Delphi e no C ++ Builder 10.1 Berlin
  • O que há de novo no Delphi e no C ++ Builder 10 Seattle
  • O que há de novo no Delphi e no C ++ Builder XE8
  • O que há de novo no Delphi e C ++ Builder XE7
  • O que há de novo no Delphi e no C ++ Builder XE6
  • O que há de novo no Delphi e no C ++ Builder XE5
  • O que há de novo no Delphi e C ++ Builder XE4
  • O que há de novo no Delphi e no C ++ Builder XE3
  • O que há de novo no Delphi e no C ++ Builder XE2
  • O que há de novo no Delphi e C ++ Builder XE
  • O que há de novo no Delphi e C ++ Builder 2010
  • O que há de novo no Delphi e C ++ Builder 2009
  • O que há de novo no RAD Studio (Delphi for Win32 2007)
  • O que há de novo no RAD Studio (C ++ Builder 2007)
  • O que há de novo no Delphi 2006
  • O que há de novo no Delphi 2005
  • O que há de novo no Delphi 7
  • O que há de novo no Delphi 6
  • O que há de novo no Delphi 5
  • O que há de novo no Delphi 4
  • O que há de novo no Delphi 3
  • O que há de novo no Delphi 2
  • Recursos do Delphi 1

A lista completa da Embarcadero: o que há de novo
Veja também: lista de David I


Para resumir:

Delphi 10.3 (codinome Carnival) (a confirmar)

  • Suporte para OSX de 64 bits
  • Tipos anuláveis

Delphi 10,2 Tóquio

  • Suporte para aplicativos de servidor Linux (Intel de 64 bits usando LLVM e ARC).
  • A atribuição de matrizes dinâmicas a um ponteiro usando o operador @ só é permitida quando a matriz é impressa.
  • Resolução de namespace mais flexível de nomes de unidades

Delphi 10.1 Berlin

  • Suporte nativo para o tipo Utf8String e RawByteString em todas as plataformas
  • Os atributos [weak] , [unsafe] e [volatile] são suportados em todos os compiladores.
  • O tamanho do estendido no OSX agora é de 16 bytes.
  • Os helpers de class e registro não podem acessar membros particulares das classs ou registros estendidos .
  • Suporte para Android até 6.01.

Delphi 10 Seattle

  • Suporte para Android 5.1.1 e iOS 8.4
  • Manipulação de exceções do OSX aprimorada

Delphi XE8

  • Suporte para iOS de 64 bits;
  • Novos tipos inteiros: FixedInt , FixedUInt tipos inteiros de 32 bits em todas as plataformas;
  • Novos tipos inteiros dependentes de plataforma: LongInt , LongWord (64 bits no iOS-64, 32 bits em todas as outras plataformas);

Delphi XE7

  • Operações semelhantes a strings suportadas em matrizes dinâmicas
  • Biblioteca Paralela adicionada à RTL
  • Novas rotinas intrínsecas do compilador (não documentadas):

    function IsManagedType(T: TypeIdentifier): Boolean; function HasWeakRef(T: TypeIdentifier): Boolean; function GetTypeKind(T: TypeIdentifier): TTypeKind; function IsConstValue(Value): boolean;

Delphi XE6

Delphi XE5

  • Suporte Android;
    precisa de dispositivo com ArmV6 + Neon ou ArmV7 para implantação
    introduz condicional definir ANDROID
  • Sobrecarga de operadores para classs (mas apenas para o compilador NextGen {Android / iOS})

Delphi XE4

  • Os seguintes novos condicionais são introduzidos / habilitados no XE4:
    AUTOREFCOUNT
    CPUARM
    EXTERNAL_LINKER
    IOS
    PRÓXIMA GERAÇÃO
    UNDERSCOREIMPORTNAME
    WEAKREF
    WEAKINSTREF
    WEAKINTREF

    • Reintroduzido o suporte para iOS.
    • Nova diretiva de dependency para especificar as dependencies de uma biblioteca externa (não documentada até o XE8).
    • Suporte ARC nos compiladores NextGen (incluindo TObject.DisposeOf ).
      Note que muito do trabalho de base para o ARC já estava no XE3, mas muito do que foi desativado
    • Antes do lançamento do XE4, as instruções $IF só podiam ser terminadas com $IFEND , e as $IFDEF , $IFNDEF , $IFOPT só podiam ser terminadas com $ENDIF .

No XE4, isso mudou para que $ ENDIF se tornasse um terminador aceito para $ IF, $ IFDEF, $ IFNDEF e $ IFOPT.

Delphi XE3

  • Registrar helpers para tipos internos
  • Suporte removido para iOS.
  • Funções intrínsecas atômicas:
    AtomicExchange() , AtomicIncrement() , AtomicCmpExchange() , AtomicDecrement()
  • Introdução do atributo [ref] .

Delphi XE2

  • Suporte multiplataforma para Mac OSX (32 bits) e iOS;
  • Suporte para Win64;
  • RTL modificada para suportar plataforma cruzada;
  • Alinhamento de Byte Packed Forces Now de Registros (Pre XE2 não necessariamente faz isso)
  • Oito novos DEFINEs foram adicionados:

    ALIGN_STACK
    CPUX86
    CPUX64
    MACOS (sistema operacional Mac)
    MACOS32
    PC_MAPPED_EXCEPTIONS
    FOTO
    WIN64

  • Nomes de escopo de unidade completa agora são necessários em sua cláusula uses .
  • {$ExcessPrecision on/off} compilador {$ExcessPrecision on/off} (apenas x64)
  • Os tipos de build diferem dependendo da plataforma de destino (32/64-bit)
    • Tipo de dados estendido É 10 bytes no Win32, mas 8 (!) Bytes no Win64

Delphi XE

  • A diretiva de compilador {$STRINGCHECKS} é ignorada no XE;
  • Novo valor de 16 bytes para a diretiva {$ALIGN} : os valores aceitáveis ​​para a diretiva {$ALIGN} agora incluem 1, 2, 4, 8 e 16.
  • nova diretiva {$CODEALIGN} , isso define o endereço inicial para um procedimento ou function.
  • A {$STRONGLINKTYPES ON}
  • Suporte para expressões regulares.

Delphi 2010

  • RTTI aprimorado do Delphi (informações sobre o tipo de tempo de execução).
  • Atributos
  • O operador as pode ser usado para converter uma referência de interface de volta ao object do qual ela foi extraída.
  • O operador is pode ser usado para verificar se uma referência de interface foi extraída de uma determinada class.
  • A conversão não segura normal pode ser executada em uma interface: TObject(SomeInterface) .
  • nova diretiva delayed indica que uma biblioteca externa, como uma DLL, não deve ser carregada no momento da declaração, mas deve aguardar até a primeira chamada para o método
  • Construtor de Classe / Destructor

Delphi 2009

  • string tipo intrínseco agora mapeia para UnicodeString ;
  • {$HighCharUnicode on|off} compilador {$HighCharUnicode on|off}
  • Genéricos ;
  • function Default(T): T function intrínseca function Default(T): T (não documentado)
  • Ponteiros inteligentes ;
  • Métodos anônimos ;
  • Suporte para exceções aninhadas e rastreamento de exceção ;
  • suporte para pointermath e uma nova diretiva de compilador: {$PointerMath on|off} ;
  • Quatro novos avisos do compilador:
    • W1057 Implicit string cast from '%s' to '%s' ,
    • W1058 Implicit string cast with potential data loss from '%s' to '%s' ,
    • W1059 Explicit string cast from '%s' to '%s' ,
    • W1060 Explicit string cast with potential data loss from '%s' to '%s' ;
  • A function Exit pode ter um parâmetro especificando um resultado;
  • resourcestrings como Widestrings;
  • TObject tem um ponteiro oculto extra para o TMonitor , além do seu ponteiro do VMT;
  • a palavra-chave deprecated agora pode ter texto adicional

Delphi 2007

  • Nenhuma mudança de idioma que eu conheça;
    Note que o Delphi 2007 é um lançamento sem interrupções, o DCU da D2006 funcionará inalterado no D2007 ;
  • (A ‘personalidade’ do .NET de 2007 introduziu genéricos )

Delphi 2006

  • Registros aprimorados ;
  • sobrecarga do operador ;
  • methods e propriedades static ;
  • ajudantes de class ;
  • FastMM é o gerenciador de memory padrão;
  • palavra-chave strict visibilidade privada / protegida ;
  • palavra-chave final para methods virtuais;
  • {$METHODINFO} ;

Delphi 2005

  • for ... in loops,
  • palavra-chave inline
  • Curinga na declaração de usos permitida
  • tipos nesteds
  • constantes aninhadas
  • {$REGION} / {$ENDREGION} diretivas

Delphi 7

  • três avisos adicionais do compilador:
    • Unsafe_Type,
    • Unsafe_Code e
    • Unsafe_Cast. Esses avisos estão desativados por padrão, mas podem ser ativados
  • nova diretiva de compilador {$WARN UNSAFE_CODE ON}
  • Sobrecargas de rotinas que formatam e analisam números, valores de data e hora e moeda usando uma estrutura TFormatSettings .

Delphi 6

  • [TCustomVariantType][68] fornece sobrecarga do operador para tipos de variantes personalizadas
  • Novas diretivas de compilador:
    • {$IFDEF MSWINDOWS}
    • {$IFDEF LINUX}
    • {$LIBPREFIX}
    • {$LIBSUFFIX}
    • {$LIBVERSION}
    • {$MESSAGE 'message'}
    • {$SetPEFlags}
  • Suporte para diretivas de compilador {$IF}{$ELSE}
  • Diretrizes de dicas do compilador: experimental , deprecated , library , platform (mas sem texto adicional para uso obsoleto)
  • A variante não é mais baseada em COM, mas alterada para ser compatível com CLX, a variante baseada em COM renomeada para OLEVariant
  • As constantes digitadas não podem ser atribuídas a (Substituir por {$J+} )
  • Tipos enumerados podem ser atribuídos a um valor explícito (cf C ++);
  • Propriedades da interface
  • Suporte para chamar varargs funções externas (mas apenas para a convenção de chamada cdecl )
  • variantes personalizadas

Delphi 5

Não há novos resources de idioma, mas:

  • Suporte adicionado para frameworks

Delphi 4

  • Matrizes dinâmicas
  • LongWord e Int64 ; Cardinal é um UINT32 (antes de ter um valor de 31 bits sem sinal)
  • Real leva 8 bytes e é o mesmo que o double (anteriormente era 6 bytes);
    • Substituir pela nova diretiva de compilador {$REALCOMPATIBILITY ON} ;
    • REAL48 substitui o antigo real 6 bytes;
  • Suporte para resourcestrings
  • Sobrecarga de método
  • parameters padrão
  • {$EXTERNALSYM} e {$NODEFINE} diretivas
  • implements palavra – chave para propriedades

Delphi 3

  • Wordbool, longbool e bytebool armazenam false como -1 vez de 1 (Boolean é inalterado)
  • Componentes devem ser instalados usando packages .
  • Afirmações
  • parâmetros de out .
  • Widestring
  • interface e dispinterface palavra-chave e COM ( dispid ) suporte.

Delphi 2

  • Suporte para 32 bits;
  • Ansistring substitui o shortstring como o tipo de sequência padrão
  • Currency
  • Variant (para interoperabilidade com automação OLE).
  • Suporte de ThreadVar e palavra-chave ThreadVar .
  • Dados de 4 bytes são alinhados por 4 bytes A nova palavra-chave packed sobrescreve esse comportamento;
  • TDateTime começa em 1899/12/30 sob D1 começou em 0000/00/00
  • nova palavra-chave de finalization
  • register e stdcall chamadas convenções adicionadas.
  • palavra-chave packed .

Apenas para complementar a resposta do Johan marque esta input no meu blog List of changes between versions of Delphi (Since Delphi 5) e a excelente página The TIndex que lista a maioria dos novos resources desde delphi 2005 e resources sobre cada um.

O arquivo jedi.inc usado pelo projeto Depi JEDI expõe uma série de características definidas. Se o seu projeto for compatível com MPL, você poderá usá-lo para detecção de resources e evitar o problema de reinventar essa roda em particular.

Por exemplo, ele define SUPPORTS_FOR_IN se o compilador suporta enumeradores. Pode-se envolver o código do enumerador em uma verificação IFDEF para essa definição em vez de verificar uma versão específica do compilador.