Isn't GLsizei supposed to be size_t?

According to the specification GLsizei is “Non-negative binary integer size”, what I understand is the type should be unsigned. But in my linux and windows development environments “gl.h” defines it as “typedef int GLsizei;”. Moreover, glcorearb.h at the registry defines it as “int” as well. Do I understand the spec wrong? What am I missing?

What the specification says is that the type is signed but the values assign to that type can’t be negative… Yes GLsizei is a int which I agree is a strange idea.