NAME

docs/deprecations/deprecations_2_9.pod - Parrot Deprecations for 2.9

Parrot Deprecations for 2.9

Remove charset opcodes and fixed_8 encoding

Description

Charsets have been merged into encodings. The charset opcodes and the fixed_8 encoding will be removed.

Rational

After the charset/encoding merge, they're unneeded.

Replacment

Use the corresponding encoding opcodes instead.

    /* old code */
    $I0 = charset $S0
    $S1 = charsetname $I0
    $I1 = find_charset "ascii"
    $S2 = trans_charset $S0, $I1

    /* updated code */
    $I0 = encoding $S0
    $S1 = encodingname $I0
    $I1 = find_encoding "ascii"
    $S2 = trans_encoding $S0, $I1

The list of supported encodings is:

    ascii
    iso-8859-1
    binary
    utf8
    utf16
    ucs2
    ucs4

Use the 'utf8' encoding instead of the 'unicode' charset. The 'fixed_8' encoding is also going away. Use 'ascii' instead. If you want to test for a fixed_8 encoding, you have to compare the encoding to 'ascii', 'iso-8859-1' and 'binary' separately.

Remove Parrot_PCCINVOKE

Description

The C function Parrot_PCCINVOKE has been removed.

See TT #443 and [wiki:PCCMigrationNotes] for details.

Rational

This function didn't conform to Parrot's naming conventions.

Replacment

Use Parrot_pcc_invoke_method_from_c_arg instead.

A simple textual substitution is enough to update any code that depends on this function.

    /* old code */
    Parrot_PCCINVOKE(interp, interp->scheduler, CONST_STRING(interp, "count_handlers"), "S->I", handler_type, &count);

    /* updated code */
    Parrot_pcc_invoke_method_from_c_args(interp, interp->scheduler, CONST_STRING(interp, "count_handlers"), "S->I", handler_type, &count);

See r42129 for more examples.

Remove Parrot_find_global_s and Parrot_store_global_s

Description

Parrot_find_global_s and Parrot_store_global_s were removed after they were found to be unused.

Rational

Nothing in Parrot used them and they were therefore untested.

Replacment

Use the body of one of the old functions in place of its call.

    /* old code */
    XXX: insert code here

    /* updated code */
    XXX: insert code here

See r48435 (src/namespace.c changes) for an example of what to replace calls to these functions with.

See r42129 for more example

Change behavior of find_lex opcode

Description

The find_lex opcode no longer throws an exception when the lexical is not found; it returns PMCNULL instead.

Rational

This is consistent with the other "lookup" opcodes.

Replacment

If you want to throw an exception, you must check the result of the opcode and throw the exception explicitly.

Remove CodeString PMC

Description

The CodeString pmc has been removed.

See TT #1633

Rational

With the switch to immutable strings, CodeString became very expensive, as it did a lot of string concatenations.

Replacment

As a replacement for the .emit() functionality, instead use .append_format() in StringBuilder. Only difference from emit() is that newlines are not automatically appended, so you'll have to add them manually.

Charname_to_ord is now an opcode: find_codepoint.

The other methods that were provided are now part of PCT (and are probably not needed directly).

Eliminate Raw NCI

Description

It is no longer possible to create an NCI pmc without a corresponding NCI signature.

See TT #1549

Rational

This functionality abused the NCI and went against the initial purpose - bridging the gap between parrot and C by translating calling conventions.

This was error prone, generally leading to segfaults.

Replacment

If you must have an equivalent, take a look at NativePCCMethod. Otherwise, enjoy the fact that your segfaults are now most likely "not implemented" errors.

GetRuntimePrefix

Description

The function Parrot_get_runtime_prefix has been removed.

See TT #1191

Rational

It returned a char * instead of a Parrot string.

A new function provides better functionality and there is no need to keep this.

Replacment

Parrot_get_runtime_path

RemoveIsTty

Description

The method is_tty in several Handle PMCs has been removed.

See TT #1689

Rational

There was a inconsistency, some PMCs used is_tty and others isatty. The decision was to keep isatty.

Replacment

Use isatty.