glDrawArrays(GL_POINTS, , ) and the core profile

Hello everyone,
Been stuck with the following problem for a while, so any insight or clue will be greatly appreciated.
The following commands work fine with glsl 330 and the compatibility profile, but not with the core profile.

                glEnable(GL_PROGRAM_POINT_SIZE); 
                glDrawArrays(GL_POINTS, 0, nPoints);

If the core profile is requested, glGetError returns a GL_INVALID_OPERATION.

If it can help, here are the shader codes.

// vertex shader
#version 330

uniform mat4 pvmMatrix;
uniform mat4 vmMatrix;
in vec4 vertexPosition_modelSpace;
in vec4 vertexColor;

uniform float pointsize;

out vec4 pointcolor;
out vec3 Position_viewSpace;

void main(void)
{
    gl_Position =  pvmMatrix * vec4(vertexPosition_modelSpace.xyz, 1.0f);
    vec4 vsPos = vmMatrix * vec4(vertexPosition_modelSpace.xyz, 1.0f);
    Position_viewSpace = vsPos.xyz;

    gl_PointSize = pointsize;
    pointcolor = vertexColor;
}
//fragment shader
#version 330

uniform float clipPlane0; // defined in view-space

in vec3 Position_viewSpace;
in vec4 pointcolor;

layout(location=0) out vec4 fragColor;

void main(void)
{
    if (Position_viewSpace.z > clipPlane0)
    {
        discard;
        return;
    }

    fragColor = pointcolor;
}

Thanks in advance,

https://www.khronos.org/opengl/wiki/GLAPI/glDrawArrays

Core doesn’t support client arrays or the default VAO (IIRC), and so requires VAO+VBO use. You might check that.

The missing VAO was indeed the cause of the problem.
Thanks for the help.