Penrose by default uses OpenDS as an LDAP service that supports LDAPv3 standards. This means that Penrose can accept any valid LDAPv3 requests. However, since Penrose is a virtual directory, this does not mean that all requests will translate to similar behavior as in a regular LDAP server.
Penrose can accept most commonly used LDAP operations (i.e. add, bind, compare, delete, modify, modrdn, search, and unbind) and forward it to the data source that supports it. However, some operations are not applicable to certain data sources (e.g. NIS server is read-only). It also depends on the mapping, certain attributes might be generated dynamically and not mapped into an actual field in the data source (e.g. there is no givenName in /etc/passwd).
Currently Penrose does not support abandon and modifydn operations.
Penrose can accept LDAP controls and forward it to LDAP data sources. However, currently Penrose does not handle LDAP controls by itself (e.g. persistent search are not supported).
Currently Penrose does not support extended operations.
Penrose can accept UTF-8 data. However, the data source may or may not accept UTF-8 data.
Penrose supports several matching rules (e.g. case exact, case ignore). However, the matching rule might not apply in certain data sources (e.g. MySQL is case insensitive by default).
Penrose relies on schema definition to do certain operations but currently does not enforce schema compliance.