# Unreleased¶

Unreleased
Previous release:Version 0.11.1

## Frame¶

• A Frame can now be constructed from an Arrow table:

DT = dt.Frame(arrow_table) 

This process uses data Arrow C Data interface, and therefore does not entail data copying.

• .meta property now provides access to frame’s meta information, if any, as set by datatable functions/methods or by the user.

• The row selector i in the delete operation del DT[i, :] can now be an unsorted list. The list can also contain duplicate values.

• When a Frame is shown in a python console, it will now display the stype of each column, as a second line under the column names. #2810

• A Frame can now be created properly from a list of numpy bool objects. #2762

## FExpr¶

• Function ifelse() can now accept more than 3 arguments, implementing a chained-if functionality. This is equivalent to CASE WHEN in SQL. #2656

• New function as_type() that allows casting columns into a different stype. This function is an alternative to the already existing functionality of using the stype itself as a cast function.

• Function sort() can now accept argument na_positon. It can take three values: "first" (default), "last" and "remove". The values describe the position assigned to NAs after sorting. #793

• Function cut() can now accept argument bins, that is a list or a tuple of frames containing edges of the binning intervals. #2819

• When a whole column is updated within a DT[i, j, by()] call, the stype/ltype of that column us now allowed to change. #2685

• Fix a crash that occurred when using median() on virtual columns of type ArrayView64. #2802

• Fread no longer throws an exception when the list of column types passed to parameter columns= contains str64. #2704