Arduino Ethernet library 2.00 for W5100, W5200, and W5500

New features in version 2.0.0
Auto-detection of W5100, W5200, and W5500 Ethernet hardware.

All SPI-based Wiznet chips are now automatically detected.
Ethernet.init(pin) allows use of any digital pin for CS signal.
Performance improvements

Caching of socket receive registers (eliminates redundant SPI overhead)
Immediate TCP ACK
W5500/W5200 block mode for data transfer
W5500/W5200 block mode for multi-byte registers
Use SPI block transfer for W5500/W5200
Native CS pin register control on most boards

...

Some more details here:
https://www.pjrc.com/arduino-ethernet-library-2-0-0/

One thing that hasn't been mentioned is the extra features and performance improvements come at the cost of pretty significant memory usage increases. This is unfortunate, especially for people trying to use the Ethernet library on Uno or smaller, but these features have been much requested for a long time now and I know the new code was written to high standards.

pert:
Some more details here:
Arduino Ethernet Library 2.0.0

One thing that hasn't been mentioned is the extra features and performance improvements come at the cost of pretty significant memory usage increases. This is unfortunate, especially for people trying to use the Ethernet library on Uno or smaller, but these features have been much requested for a long time now and I know the new code was written to high standards.

So how much is the increase of memory usage?

That will vary with the code, target, and compiler version. Here's the numbers for the ChatServer example from Ethernet 1.1.2 compiled for Uno from Arduino AVR Boards 1.6.21:

Ethernet 1.1.2:

Sketch uses 9998 bytes (30%) of program storage space. Maximum is 32256 bytes.
Global variables use 576 bytes (28%) of dynamic memory, leaving 1472 bytes for local variables. Maximum is 2048 bytes.

Ethernet 2.0.0:

Sketch uses 12778 bytes (39%) of program storage space. Maximum is 32256 bytes.
Global variables use 544 bytes (26%) of dynamic memory, leaving 1504 bytes for local variables. Maximum is 2048 bytes.

So the increase is in the use of program memory and not in Ram.

It all depends on the code. In some cases SRAM used by globals increased too.

I did a comparison of all the 1.1.2 example sketches compiled for both versions for a variety of boards (Uno, Leonardo, Mega, ATmega1284P, Due, Zero, 101):

Average program memory usage change: +14.3%
Average global dynamic memory usage change (only for AVR Boards because the IDE doesn't report this for others): +7.6%

Per, did you compile the Ethernet 1.1.2 examples with 2.00? or 2.00 examples? they have more checks at the beginnig

I compiled the 1.1.2 examples with both Ethernet versions. It definitely wouldn't be accurate to compile the 1.1.2 examples with 1.1.2 and 2.0.0 examples with 2.0.0 and the 2.0.0 examples aren't compatible with 1.1.2.